2013-06-10 4 views
0

Я довольно новичок в PHP.Php: Как работает подача формы?

Код довольно прост:

home.php:

<form action="getsentitem.php" method="get"> 
    <div > 
    <input name="query" id="query" class="searchQuery" size="20" value="" type="text" autocomplete="off"> 
    <input id="searchButton" value="Search" type="submit"> 
    </div> 
</form> 

getsentitem.php:

<?php 
if (isset($_GET['query'])) 
$query = $_GET['query']; 

?> 

Вопрос: Приведенный выше код будет просто дать мне все, что я вхожу в текстовом поле, которое есть в home.php. Теперь, есть ли способ, с помощью которого я могу получить значения других атрибутов текстового поля? Например, можно получить идентификатор текстового поля или его размер с помощью этого метода.

+1

Это не возможно, представления форм в PHP только передает значение и имя в массиве из GET или POST, если метод = «пост» – rorypicko

ответ

3

Нет, это не так. Только пары name => value отправляются на сервер с помощью выбранного вами метода (GET/POST).

Вы можете включать в себя пользовательские данные в скрытых входах внутри формы, если вы хотите:

<form action="getsentitem.php" method="get"> 
    <div > 
    <input type="hidden" name="more_info" value="I will be available after submit."/> 
    <input name="query" id="query" class="searchQuery" size="20" value="" type="text" autocomplete="off"> 
    <input id="searchButton" value="Search" type="submit"> 
    </div> 
</form> 

echo $_GET['more_info']; // 'I will be available after submit.' 

Это удобно при создании дополнительных данных с помощью AJAX вызовов и яваскрипта вычислений. Вы не обязательно знаете все идентификаторы высоко динамической веб-страницы.

CSRF жетоны также обычно отправляются таким образом.


+0

Несмотря на то, что я согласен с ответом deceze, что идентификатор должен быть известен в первую очередь, так как это чистый HTML, это хорошая вещь, чтобы знать о формах. –

+0

NOw, это было то, что я искал. Большое спасибо. :) Нужно что-то вроде этого. Примите ваш ответ, когда 9 минут - купол;) Спасибо большое –

1

Короткий ответ: NO

Вы можете получить только значение входа от $_GET superarray.

Редактировать.

Однако, если вы сделали что-то вроде этого:

<form action="getsentitem.php" method="get"> 
    <div > 
    <input name="query" id="query" class="searchQuery" size="20" value="" type="text" autocomplete="off"> 
    <input name="queryMeta" value="id:query_class:searchQuery_size:20" type="hidden"> 
    <input id="searchButton" value="Search" type="submit"> 
    </div> 
</form> 

Тогда вы можете прочитать его в PHP, как это:

<?php 
if (isset($_GET['queryMeta'])) 
$queryMeta = explode('_',$_GET['queryMeta']); //splits the string to array('id:query','class:searchQuery','size:20') 
?> 
+4

Длинный ответ: 'NOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO'. – h2ooooooo

+0

Почему concat данные в одном поле, когда вы можете иметь бесконечность их плавающих вокруг? Я не думаю, что это хорошая практика. –

+0

@MaximKumpan Я думаю, что лучше всего это сгруппировано по ряду причин. Прежде всего - это не испортит форму вывода, так что + меньше кода для отправки + для меня легче различать входы с мета значениями и остальными. Лично я бы так не сдавал атрибуты, но я подумал, что может быть довольно хорошо, чтобы ОП получал то, что он хотел. – MythThrazz

2

No. Только введенное значение передается с именем, которое вы дали это ничто иное; вы можете точно видеть, что отправляется в URL-адрес, вот и все. Поскольку вы создали HTML в первую очередь, вы должны знать, каковы были другие значения.

Смежные вопросы