Передача значений переменных по методу GET
При использовании метода GET все данные упаковываются в адресную строку. Причем происходит это следующим образом: вначале имена переменных и их значения преобразуются в вид, безопасный для передачи в строке URL (особенно хорошо это заметно, когда передаются русские символы), после чего все данные преобразуются в форму name=value и собираются в одну строку, отделяясь друг от друга знаком & (амперсанд). Происходит это таким образом:
http://site.domain/action.php?имя=значение&имя=значение
Пары "имя=значение" создаются для каждого элемента ввода, для которого указано имя атрибутом NAME.
В таком виде данные и попадают скрипту, который уже самостоятельно должен проделать обратную операцию и извлечь из строки названия переменных и их значения. Строка запросаможет содержать не более 254 символов. Это одно из ограничений метода GET, которое не позволяет передавать объемные данные.
В отличие от других серверных языков программирования, PHP делает всю нудную работу по расшифровке строки запроса, переданной методом GET, на себя и предоставляет нам уже готовые для использования в скрипте переменные. Причем имя переменной образуется из имени, указанного в соответствующем элементе формы. Если пользователь ввел в строке $name запроса имени "Гриня", то в скрипте автоматически появится переменная $name, которая будет иметь значение "Гриня".
По определению, все данные, передаваемые этим способом, доступны всем и могут быть прочитаны кем угодно. Поэтому им не рекомендуется пользоваться для передачи секретной информации - например паролей.
Рассмотрим пример передачи данных через строку URI:
<!—pr421.php -->
<html>
<head> </head>
<body>
<?php //
$a =$_GET['a'];
$b =$_GET['b'];
$c++;//Если режим on включен. Следует сначала написать $с =$_GET['с'];
echo "a=$a,b=$b"; //
print "<br>c=$c";//
echo "<br><a href='pr421.php?a=1&b=2&c=3'>новая передача</a>"
?>
</body>
</html>
Получим после запуска вида:
http://localhost/MyPrimers/pr421.php?a=10&b=20&c=30
a=10,b=20
c=31
новая передача
Если нажмем на гиперссылку новая передача, получим
a=1,b=2
c=4
новая передача
Передача данных из клиентской формы на сервер по методу GET
<html><head>
<title>Simpleform.html </title>
</head>
<body>
<form action="form.php" method="GET">
Имя:<input type="text" name="fio"><p>
<input type="submit" value="GO"><p>
</form>
</body>
</html>
<?php //form.php
echo "Hello, $fio<br>";
foreach($_GET as $fio=>$value);
echo "$fio=$value<br>";
print_r ($_GET);
print_r ($_REQUEST);
?>
Результат:
Hello,valera
fio=valera
Array ( [fio] => valera ) Array ( [fio] => valera )
Передача данных из клиентской формы на сервер по методу POST
Метод POST, в отличие от GET, передает все данные на стандартный вывод. Соответственно, и ограничений на длину информации нет.
Какой же из этих методов лучше? Это зависит от конкретной ситуации. Для передачи информации, вводимой в форме, в большинстве случаев лучше подходит метод POST. А вот в случае динамических сайтов, когда показываемая страничка определяется не только адресом странички, но и переменными (типичный представитель - интернет-магазин), лучше использовать метод GET.
Кроме простого задания переменной в форме, PHP позволяет использовать для этой цели и массивы. В этом случае код нашей формы будет выглядеть вот так:
<form action="formmail.php" method="post">
Ваше имя:
<input type="text" name="user[name]"><br>
Электронный адрес:
<input type="text" name="user[email]"> <br>
Сообщение:
<textarea name="user[message]"></textarea><br>
<input type="submit" value="Отправить">
</form>
Теперь все введенные пользователем данные будут находиться в массиве $user, что очень удобно для больших форм и передачи множества данных в функцию.
При исполнении скрипта на PHP создаются переменные с именами, соответствующими именам полей и содержащие соответствующие значения.
Предположим, что мы создали форму следующего вида:
<form action="multi.php" method="POST">
<input type="text" NAME="first" SIZE="4" MAXLENGTH="4">
< input type ="text" NAME="second" SIZE="4" MAXLENGTH="4">
< input type ="Submit" VALUE="Умножить">
</form>
Скрипт, содержащийся в файле multi.php может выглядеть следующим образом:
<?php
//$first=$_POST['first']; $second=$_POST['second'];
echo "$first умножить на $second получится ", $first*$second;
?>
Вывод:
5 умножить на 6 получится 30
Если register_globals=off в файле php.ini, комментарий // в закомментированной строке надо убрать.
Существует специальный тип поля HIDDEN. Это поле, которое не выводится на экран, но, если ему присвоено имя атрибутом NAME, значение его передается в форму. С помощью такого поля можно задать тип действия, которое мы хотим произвести с данными формы.
PHP воспринимает массивы в контексте переменных формы. Можно группировать взаимосвязанные переменные вместе:
<form action="array.php" method="post">
Имя: <input type="text" name="user[name]"><br>
E-mail: <input type="text" name="user[email]"><br>
Хобби: <br>
<select multiple name="hobbi[]">
<option value="книги">Книги
<option value="компьютер">Компьютер
<option value="музыка">Музыка
<option value="спорт">Спорт
</select>
<input type="submit" value="Отправить">
</form>
Теперь создадим сам PHP-скрипт array.php, обрабатывающий эту форму:
<?php //array.php
/* выводим выбранные в форме переменные */
print "user[name]:$user[name]<BR>";
print "user[email]:$user[email]<BR>";
print "hobbi:$hobbi[0]";
?>
Вывод:
user[name]:rrrrrrrr
user[email]:yyyyyyyyyy
hobbi:спорт
В результате обработки этой формы PHP создаст ассоциативный массив user[] с элементами $user[name] и $user[email], и массив hobbi[] с элементами $hobbi[0], $hobbi[1], $hobbi[2], $hobbi[3]. Пользователь имеет возможность сделать множественный выбор, т.е. указать в качестве выбора hobbi[0]: книги, компьютер, музыка, спорт.
PHP и различные формы
Создание простой формы
Теги <form> и </form> задают начало и конец формы. Стартовый тег <form> содержит два атрибута: action и method. Атрибут action содержит адрес URL сценария, который должен быть вызван для обработки сценария. Атрибут method указывает браузеру, какой вид HTTP запроса POST или GET необходимо использовать для отправки формы. Главное отличие методов POST и GET заключается в способе передачи информации. В методе GET параметры передаются через адресную строку, т.е. по сути в HTTP-заголовке запроса, в то время как в методе POST параметры передаются через тело HTTP-запроса и не отражаются в адресной строке.
<form method="post" action="/my/action.php">
</form>
Ниже перечислены все возможные элементы ввода, которые используются в формах.
TEXT- Поле ввода текста.
SELECT- Выбор из списка.
RADIO- Используется для выбора одного из предложенных вариантов.
CHECKBOX- Кнопка-флажок. Используется для выбора варианта.
SUBMIT- Кнопка, которая инициирует вызов обработчика формы.
IMAGE- Изображение. Используется как кнопка типа SUBMIT
<TEXTAREA>- Область ввода текста.
Теперь рассмотрим, как значения и состояния этих элементов передаются в обработчик.
IMAGE - В обработчик передаются два значения: имя.x и имя.y, которые представляют собой координату указателя мыши относительно верхнего левого угла изображения. Строка выглядит следующим образом: имя.x=значение&имя.y=значение. В скрипте устанавливаются переменные $имя_x и $имя_y.
При пересылки строковых значений они перекодируются специальным образом. Все символы, кроме алфавитно-цифровых и знака подчеркивания "_" заменяются знаком процента "%" и двумя шестнадцатеричными цифрами кода. Пробелы заменяются на знак "+". При установке переменных в скрипте производится обратное декодирование.
1)Текстовые поля (text)
Под текстовыми полями в понимаются элементы, создаваемые тегам input со значением параметра type равным text или textarea. Введенное значение передается в виде: Имя_поля=значение. Позволяет пользователям вводить информацию.
<input type="Тип" name="Имя_поля" size="Размер" maxlength="Макс. количество символов">
Если указан параметр value, то поле будет отображать value-текст. Атрибут имя_ поля является обязательным.
Пример:
<input type="text" name="txtName" size="10" maxlength="5" value="Текст по умолчанию">
Ниже приведен пример с html-разметкой для такой формы.
<form action='do.php' method='post'>
<input type='text' name='txt[0]' value=''><br>
<input type='text' name='txt[1]' value=''><br>
<input type='text' name='txt[2]' value=''><br>
<input type='text' name='txt[3]' value=''><br>
<input type='text' name='txt[4]' value=''><br>
<input type='submit' value='Отправить'>
</form>
Имена для элементов формы, с точки зрения PHP, являются элементами массива. Поэтому PHP-сценарий, который будет обрабатывать эту форму, будет воспринимать все множество текстовых полей этой формы как единый массив. К отдельным элементам можно обращаться по индексам или использовать перечисление при помощи команд list и each, как это сделано в следующем примере.
<?php
while(list($key,$val) = each($txt))
echo "ключ - $key, значение - $val<br>\n";
?>
2) Многострочное поле ввода текста (textarea)
Многострочное поле ввода текста позволяет отправлять не одну строку, а сразу несколько. По умолчанию тег создает пустое поле шириной в 20 символов и состоящее из двух строк.
<textarea name="Имя поля" cols="Ширина поля " rows="Число строк">Текст</textarea>
Многострочное поле ввода текста начинается с парных тегов <textarea></textarea>. Тэг name задает имя многострочного поля. Также можно указать ширину поля(cols) и число строк(rows). При необходимости можно указать атрибут readonly, который запрещает редактировать, удалять и изменять текст, т.е. текст будет предназначен только для чтения. Если необходимо чтобы текст был изначально отображен в многострочном поле ввода, то его необходимо поместить между тэгами <textarea></textarea>.
Пример:
<textarea name="txtArea" cols="15" rows="10" readonly>
Текст, который изначально будет отображен в многострочном поле ввода и который нельзя изменять, т.к. указан атрибут readonly </textarea>.
3) Поле для ввода пароля (password)
Полностью аналогичен текстовому полю, за исключением того что символы, набираемые пользователем, не будут отображаться на экране. Пример:
<input type="password" name="txtName" size="10" maxlength="5">
4) Скрытое текстовое поле(hidden)
Позволяет передавать сценарию какую то служебную информацию, не отображая её на странице.
<input name="Имя" type="Тип" value="Значение">
Скрытое поле начинается с тега <input>, атрибуты которого являются name, type и value. Атрибут name задает имя поля, type определяет тип поля, а атрибут value задает значение поля.
Пример:
<input name="email" type="hidden" value="[email protected]">
5) Флажок (checkbox)
Если флажок checkbox установлен, то передается значение on, если флажок не установлен, то переменная не передается вообще. Таким образом, установку флажка в скрипте можно проверить, сравнив значение переменной $имя с "on".
Флажки checkbox предлагает ряд вариантов, и разрешает выбор нескольких из них.
<input name="Имя переключателя" type=" checkbox" value="Значение">
Группа флажков состоит из элементов <input>, имеющих одинаковые атрибуты name и type(checkbox). Если вы хотите, чтобы элемент был отмечен по умолчанию необходимо пометить его как checked. Если элемент выбран, то сценарию поступит строка имя=значение, в противном случае в обработчик формы не придет ничего, т.е. не выбранные флажки вообще никак не проявляют себя в переданном наборе данных. Пример:
<input name="mycolor" type="checkbox" value="red" checked> Красный (выбран по умолчанию)
<input name="mycolor" type="checkbox" value="blue">Синий
<input name="mycolor" type="checkbox" value="black">Черный
<input name="mycolor" type="checkbox" value="white">Белый
Форма для использования переменного количества <переключателей> строится абсолютно так же. Обратите внимание, что выбор конкретного значения переключателя (то есть значение свойства value) не важен. Пример приведен в листинге ниже:
<form action='do.html' method='post'>
<input type='chekbox' name='chb[0]' value='1'><br>
<input type='chekbox' name='chb[1]' value='1'><br>
<input type='chekbox' name='chb[2]' value='1'><br>
<input type='chekbox' name='chb[3]' value='1'><br>
<input type='chekbox' name='chb[4]' value='1'><br>
<input type='submit' value='Отправить'>
</form>
Однако обработка такой формы отличается от обработки, описанной для текстовых полей. В данном случае необходимо определить, включил или нет посетитель сайта тот или иной переключатель. Если включил - то соответствующий элемент массива существует, если нет - то отсутствует. В следующем листинге приведен пример PHP сценария, который распечатывает включенные переключатели:
<?php
echo "выбранные значения<br>\n";
while(list($key,$val) = each($chb))
echo "ключ - $key<br>\n";
?>
6) Переключатель(radio)
Переключатели radio предлагают пользователю ряд вариантов, но разрешает выбрать только один из них.
<input name="Имя переключателя" type=" radio" value="Значение">
Переключатель (radio) имеет атрибуты name, type и value. Атрибут name задает имя переключателя, type задает тип radio, а атрибут value задает значение. Если пользователь выберет переключатель, то сценарию будет передана строка имя=значение. При необходимости можно указать параметр checked, который указывает на то, что перключатель будет иметь фокус (т.е. будет отмечен по умолчанию) при загрузке страницы. Переключатели также можно объединять в группы, для этого они должны иметь одно и тоже имя. Пример:
<input name="mycolor" type="radio" value="white"> Белый
<input name="mycolor " type="radio" value="green" checked> Зеленый (выбран по умолчанию)
<input name="mycolor " type="radio" value="blue"> Синий
<input name="mycolor " type="radio" value="red"> Красный
<input name="mycolor " type="radio" value="black"> Черный
Суть радио-кнопок заключается в том что, выбирая одну кнопку, пользователь автоматически снимает выделение с другой кнопки из этого же набора. Кнопки объединяются в набор очень просто: у всех кнопок в наборе одно и тоже имя. А вот значения (то есть параметры value) у кнопок в наборе - разные. И на сайт будет отправлено значение выбранной кнопки с именем набора. Так же как и в случае с текстовыми полями и переключателями имена наборов радио-кнопок должны оформляться как имена элементов массива в PHP. Пример:
<form action='do.html' method='post'>
// первый набор кнопок
<input type='radio' name='rdi[0]' value='1'>
<input type='radio' name='rdi[0]' value='2'>
<input type='radio' name='rdi[0]' value='3'><br>
// второй набор кнопок
<input type='radio' name='rdi[1]' value='1'>
<input type='radio' name='rdi[1]' value='2'>
<input type='radio' name='rdi[1]' value='3'><br>
// третий набор кнопок
<input type='radio' name='rdi[2]' value='1'>
<input type='radio' name='rdi[2]' value='2'>
<input type='radio' name='rdi[2]' value='3'><br>
<input type='submit' value='Отправить'>
</form>
Обработка радио-кнопок объединяет идеи, использование при обработке, как текстовых полей, так и переключателей. Если автор html-страницы не установил значение по умолчанию, а пользователь не выбрал определенную кнопку в наборе радио-кнопок, то данный элемент будет отсутствовать в массиве (как для переключателей). Если же кнопка выбрана, то соответствующий элемент массива будет содержать ее значение (как для текстовых полей). Ниже приведен листинг примера, обрабатывающего форму с несколькими наборами радио-кнопок.
<?php
while(list($key,$val) = each($rdi))
echo "ключ - $key, значение - $val<br>\n";
?>
7) Кнопка сброса формы(Reset)
<input type="Тип" name="Имя кнопки" value="Надпись на кнопке">
При нажатии на кнопку сброса(reset), все элементы формы будут установлены в то состояние, которое было задано в атрибутах по умолчанию, причем отправка формы не производиться.
Пример:
<input type="reset" name="Reset" value="Очистить форму">
8) Выпадающий список (select)
SELECT - значение берется из атрибута VALUE выбранного элемента <OPTION>. Например для <SELECT> такого вида:
<SELECT NAME="mySelect">
<OPTION VALUE="test1">test1</OPTION>
<OPTION VALUE="test2">test2</OPTION>
<OPTION VALUE="test3">test3</OPTION>
</SELECT>
Cтрока будет содержать mySelect=test1, в случае выбора первого элемента списка. Переменная в скрипте будет выглядеть так: $mySelect.
Элемент <SELECT> может иметь атрибут MULTIPLE, что позволяет выбирать несколько значений из списка. В этом случае к имени элемента <SELECT> необходимо добавить пару квадратных скобок: имя[]. Строка будет выглядеть так: имя[]=значение&имя[]=значение..., а в скрипте доступ к выбранным значениям можно осуществить, как к элементам массива $имя.
В случае, если не заданы атрибуты VALUE, то передаваться будет то, что содержится между тэгами <OPTION> и </OPTION>.
Тэг <select> представляет собой выпадающий или раскрытый список, при этом одновременно могут быть выбраны одна или несколько строк.
Список начинается с парных тегов <select></select>. Теги <option></option> позволяют определить содержимое списка, а параметр value определяет значение строки. Если в теге <option> указан параметр selected, то строка будет изначально выбранной. Параметр size задает, сколько строк будет занимать список. Если size равен 1, то список будет выпадающим. Если указан атрибут multiple, то разрешено выбирать несколько элементов из списка(при size = 1 не имеет смысла).
<select name="Имя списка" size = “Размер” multiple>
<option value=”Значение”>Отображаемый текст в списке</option>
</select>
При передаче данных выпадающего списка сценарию передается строка имя=значение, а при раскрытом списке передается строка имя=значение1&имя=значение2&имя=значениеN.
9) Кнопка отправки формы (submit)
Служит для отправки формы сценарию.
<input type="Тип" name="Имя кнопки" value="Текст кнопки">
При создании кнопки для отправки формы необходимо указать 2 атрибута: type=“submit” и value=”Текст кнопки”. Атрибут name необходим если кнопка не одна, а несколько и все они созданы для разных операций, например кнопки "Сохранить", "Удалить", "Редактировать" и т.д. После нажатия на кнопку сценарию передается строка имя=текст кнопки. Кнопка SUBMIT, как ни странно, тоже может передавать значение в обработчик. Значение устанавливается из атрибута VALUE.
10) Кнопка для загрузки файлов (browse)
Служит для реализации загрузки файлов на сервер. Объект browse начитается с парных тегов <form></form>. Начинающий тэг <form> содержит необходимый атрибут encrypt. Атрибут encrypt принимает значение multipart/form-data, который извещает сервер о том, что вместе с обычной информацией посылается и файл. При создании текстового поля также необходимо указать тип файла – “file”.
<form enctype="multipart/form-data" action="upload.php" method="post">
Загрузить файл: <input name="my_file" type="file">
<input type="submit" value="Отправить">
</form>
11) Рамка (fieldset)
Объект fieldset позволяет вам нарисовать рамку вокруг объектов. Имеет закрывающий тэг </fieldset>. Заголовок указывается в тэгах <legend></legend>. Основное назначение объекта – задавание различных стилей оформления.
Пример:
<fieldset>
<legend>Программное обеспечение(заголовок рамки)</legend>
Текст, который будет помещен внутри рамки.</fieldset>
Обработка форм
Все данные, которые вы хотите получить из HTML-формы в PHP сценарий обрабатываются с помощью суперглобальных массивов $_POST или $_GET, в зависимости от указанного в атрибуте method метода передачи данных.
Задача: Вам необходимо получить данные из текстового поля и многострочного поля ввода и передать их сценарию.
Решение: Необходимо создать HTML форму и PHP – сценарий для обработки формы.
Обсуждение:
Создадим два файла: form.html и action.php. В файле form.html будет содержаться html-форма с текстовым полем mytext и текстовой областью msg:
<form action="action.php" name="myform" method="post">
<input type="text" name="mytext" size="50">
<textarea name="msg" cols="20" rows=”10” ></textarea>
<input name="Submit" type=submit value="Отправить данные">
</form>
В этой html-форме нас интересует 3 атрибута: action который указывает путь к обработчику формы, имя текстового поля (mytext) и имя многострочного поля вода (msg). Также в форме присутствует кнопка, при нажатии на которую происходит передача данных.
После того как html-форма готова нам необходимо создать обработчик формы action.php:
<?php
$text = $_POST['mytext'];
$msg = $_POST['mytext'];
echo $text;
echo "";
echo $msg;
?>
После того как мы введем любые значение в текстовые поля и нажмем на кнопку "Отправить данные" html-форма отправить значения сценарию action.php.
После этого в переменных $text и $msg будут содержаться значения текстового поля и многострочного поля ввода соответственно, значения которых взяты из суперглобальных переменных $_POST.
Если вы хотите, чтобы в многострочном текстовом поле соблюдалось html-форматирование, то используйте функцию nl2br():
<?php
$text = nl2br($_POST['mytext']);
?>
Задача: Пусть необходимо создать выпадающий список с годами с 2000 по 2050.
Решение: Необходимо создать HTML форму c элементом SELECT и PHP – сценарий для обработки формы.
Обсуждение:
Для начала создадим два файла: form.html и action.php. В файле form.html будет содержаться html-форма с выпадающим списком. Причем значения в списке можно указать двумя способами:
I. Ввод данных вручную:
<select class="input" type=text name=years>
<option value='2000'>2000</option>
<option value='2001'>2001</option>
<option value='2002'>2002</option>
……………………………………………
<option value='2050'>2050</option>
</select>
II. Ввод данных через цикл:
<select class="input" type=text name=years>
<?php
$year = 2000;
for ($i = 0; $i <= 50; $i++) // Цикл от 0 до 50
{
$new_years = $year + $i; // Формируем новое значение
echo '<option value='.$new_years.'>'.$new_years.'</option>'; //Формируем новую строчку
}
?>
</select>
Как видно, второй пример с циклом, более компактный. Думаю, не стоит приводить скрипт обработчика данной формы, потому что он обрабатывается точно так же как текстовое поле, т.е. значения списка можно извлечь из суперглобального массива $_POST.
Задача: Загрузка файла на сервер
<FORM ENCTYPE="multipart/form-data" ACTION="action.php" METHOD=POST>
<INPUT NAME="myfile" TYPE="file">
<INPUT TYPE="submit" value="Передать файл">
</FORM>
В данной html-форме присутствует элемент browse, который открывает диалоговое окно для выбора файла для загрузки на сервер. При нажатии на кнопку "Передать файл", файл передается сценарию-обработчику.
Затем необходимо написать сценарий обработчик action.php. Перед написанием обработчика необходимо определиться в какой каталог мы будет копировать файл:
<?php
if(isset($_FILES["myfile"])) // Если файл существует
{
$catalog = "../image/"; // Наш каталог
if (is_dir($catalog)) // Если такой каталог есть
{
$myfile = $_FILES["myfile"]["tmp_name"]; // Времменый файл
$myfile_name = $_FILES["myfile"]["name"]; // Имя файла
if(!copy($myfile, $catalog)) echo 'Ошибка при копировании файла '.$myfile_name // Если неудалось скопировать файл
}
else mkdir('../image/');
// Если такого каталога нет, то мы его создадим
}
?>
Данный пример демонстрирует создание каталога и копирование файла в этот каталог на сервер.
Элемент checkbox отличается от других элементов тем, что если не один из элементов checkbox’a не выбран, то суперглобальная переменная $_POST вернет пустое значение:
<form action="file.php" method=post>
<input name="mycolor" type="checkbox" value="blue">Синий
<input name="mycolor" type="checkbox" value="black">Черный
<input name="mycolor" type="checkbox" value="white">Белый
<input name="Submit" type=submit value="Выбрать">
</form>
<?php
if (!empty($_POST['mycolor'])) echo $_POST['mycolor']; // Если выбран хоть 1 элемент
else echo "Выберите значение";
?>
Более сложные переменные формы
<?php//form5.php
if (isset($_POST['action']) && $_POST['action'] == 'submitted') {
echo '<pre>';
print_r($_POST);
echo '<a href="'. $_SERVER['PHP_SELF'] .
'">Попробуйте еще раз</a>';
echo '</pre>';
} else {
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
Имя: <input type="text" name="personal[name]" /><br />
Email: <input type="text" name="personal[email]" /><br />
Пиво: <br />
<select multiple name="beer[]">
<option value="аливария">аливария</option>
<option value="криница">криница</option>
<option value="речицкое">речицкое</option>
</select><br />
<input type="hidden" name="action" value="submitted" />
<input type="submit" name="submit" value="Go!" />
</form>
<?php
}
?>
После выполнения PHP получим следующую страницу HTML
<form action="/myphp/form5.php" method="post">
Имя: <input type="text" name="personal[name]" /><br />
Email: <input type="text" name="personal[email]" /><br />
Пиво: <br />
<select multiple name="beer[]">
<option value="аливария">аливария</option>
<option value="криница">криница</option>
<option value="речицкое">речицкое</option>
</select><br />
<input type="hidden" name="action" value="submitted" />
<input type="submit" name="submit" value="Go!" />
</form>
Результат:
Array
(
[personal] => Array
(
[name] => val
[email] => rom
)
[action] => submitted
[submit] => Go!
)
Попробуйте еще разПри отправке формы вместо стандартной кнопки можно использовать изображение с помощью тега такого вида: <input type="image" src="image.gif" name="sub" /> . Когда пользователь щелкнет где-нибудь на изображении, соответствующая форма будет передана на сервер с двумя дополнительными переменными - sub_x и sub_y. Они содержат координаты нажатия пользователя на изображение. Рассмотрим пример:
<html><head>
<title>Simpleform.html </title>
</head>
<body>
<form action="form.php" method="GET">
Имя:<input type="text" name="fio"><p>
<input type="image" src="image.gif" name="sub" />
</form>
</body>
</html>
<?php //form.php
$fio=$_GET['fio'];
echo "Hello, $fio<br>";
print_r ($_GET);
?>
Hello,valera
Array ( [fio] => valera [sub_x] => 83 [sub_y] => 64 )