Правила Форума редакция от 22.06.2020 |
|
|
|
|
|
Опции темы | Опции просмотра | Language |
03.07.2005, 14:42 | #1 |
Быстрый старт в Php Часть2/дополнение
Немного еше о формах. А именно о том, как передаются данные из формы, на сервер.
Есть два основных метода передачи> GET и POST. Вернемся к нашему второму шагу> Код:
<HTML> <HEAD> </HEAD> <BODY> <FORM method="GET"> <? $you = $_GET['you']; echo $you; ?> YOU: <INPUT TYPE="TEXT" name="you"> <INPUT TYPE="SUBMIT"> </FORM> </BODY> </HTML> поменяем GET на POST а вместо echo $you; поставим echo „\$you = $you<br>“; что бы лучше контролировать переменную $you теперь наш код будет выглядеть так> Код:
<HTML> <HEAD> </HEAD> <BODY> <FORM method="POST"> <? $you = $_GET['you']; echo “\$you = $you<br>”; ?> YOU: <INPUT TYPE="TEXT" name="you"> <INPUT TYPE="SUBMIT"> </FORM> </BODY> </HTML> введем в форму допустим 123 и... Мы в шоке, что пропал знак вопроса, ладно, что при попытке актуализировать страницу, выходит какое-то непонятное сообщение, тоже не страшно. Но мы потеряли свою переменную $you !!! Вместо положенных 123, мы видим пустое место! На самом деле, переменная $you посылается на сервер другим методом, и поэтому мы должны указать в скрипте, что ждем переменную $you переданную методом POST. Сделаем маленькое изменение, не скажу какое, развивайте внимание и концентрацию Теперь наш скрипт выглядит так> Код:
<HTML> <HEAD> </HEAD> <BODY> <FORM method="POST"> <? $you = $_POST['you']; echo "\$you = $you<br>"; ?> YOU: <INPUT TYPE="TEXT" name="you"> <INPUT TYPE="SUBMIT"> </FORM> </BODY> </HTML> Пробуем еще раз. Урааа! Все заработало. Конечно если программа маленькая, то можно все переменные выучить наизусть, А если вы работаете над большим проектом, где через форму вы должны передать на сервер десятки переменных? Тогда можно использовать маленькую подпрограмму(функцию), которую мы будем вызывать, когда захотим проверить, а что передается в форме? (и не только!) Вот ее исходник> Код:
<? /************************************************** * * Project: noname * Name: function.debug.php * Author: Andrejs Naumovs (andrejs АТ list DOT ru) * Description: * Get and print all values: _GET _POST _COOKIE _FILES _SESSION * * Version: 2.0 simply: require("path_to_/function.debug.php");debug (); ******************************************************/ function debug () { // list all gets variables printArray($_GET,'$_GET'); // list all posts variables printArray($_POST,'$_POST'); // list all cookie printArray($_COOKIE,'$_COOKIE'); // list all files printArray($_FILES,'$_FILES'); // list all session variable if (session_id() != "")printArray($_SESSION,'$_SESSION'); } function printArray($array,$name){ foreach ($array as $key => $value){ echo ($name."['$key'] = $value<br>\r\n"); // print to HTML if(is_array($value)){ echo(" +<br>"); printArray($value," ".$key); echo(" _____________________<br>"); }// endif }// endforeach return; } // ?> поэтому, я просто копирую код в конец нашего скрипта и добавляю вызов функции в наш скрипт. Код:
<HTML> <HEAD> </HEAD> <BODY> <FORM method="POST"> <? $you = $_POST['you']; echo "\$you = $you<br>"; ?> YOU: <INPUT TYPE="TEXT" name="you"> <INPUT TYPE="SUBMIT"> </FORM> <?debug();?> </BODY> </HTML> <? /************************************************** * * Project: noname * Name: function.debug.php * Author: Andrejs Naumovs (andrejs AT list DOT ru) * Description: * Get and print all values: _GET _POST _COOKIE _FILES _SESSION * * Version: 2.0 simply: require("path_to_/function.debug.php");debug (); ******************************************************/ function debug () { // list all gets variables printArray($_GET,'$_GET'); // list all posts variables printArray($_POST,'$_POST'); // list all cookie printArray($_COOKIE,'$_COOKIE'); // list all files printArray($_FILES,'$_FILES'); // list all session variable if (session_id() != "")printArray($_SESSION,'$_SESSION'); } function printArray($array,$name){ foreach ($array as $key => $value){ echo ($name."['$key'] = $value<br>\r\n"); // print to HTML if(is_array($value)){ echo(" +<br>"); printArray($value," ".$key); echo(" _____________________<br>"); }// endif }// endforeach return; } // ?> Ну и что спросите Вы? Стоило огород городит? Ну тогда попробуйте так> :дразню Код:
<?session_start()?> <HTML> <HEAD> </HEAD> <BODY> <FORM method="POST"> First name:<INPUT TYPE="TEXT" name="customer[first_name]"><br> Last name:<INPUT TYPE="TEXT" name="customer[last_name]"><br> Email:<INPUT TYPE="TEXT" name=customer[email]><br> pwd: <INPUT type="password" name="pwd"><br> <textarea name="textfield"></textarea><br> <INPUT TYPE="SUBMIT"> </FORM> <?$_SESSION['textfield'] = $_POST['textfield']?> <?debug();?> </BODY> </HTML> <? /************************************************** * * Project: noname * Name: function.debug.php * Author: Andrejs Naumovs (andrejs AT list DOT ru) * Description: * Get and print all values: _GET _POST _COOKIE _FILES _SESSION * * Version: 2.0 simply: require("path_to_/function.debug.php");debug (); ******************************************************/ function debug () { // list all gets variables printArray($_GET,'$_GET'); // list all posts variables printArray($_POST,'$_POST'); // list all cookie printArray($_COOKIE,'$_COOKIE'); // list all files printArray($_FILES,'$_FILES'); // list all session variable if (session_id() != "")printArray($_SESSION,'$_SESSION'); } function printArray($array,$name){ foreach ($array as $key => $value){ echo ($name."['$key'] = $value<br>\r\n"); // print to HTML if(is_array($value)){ echo(" +<br>"); printArray($value," ".$key); echo(" _____________________<br>"); }// endif }// endforeach return; } // ?> Если это кому-то поможет в отладке программ, буду рад! Надеюсь процесс передачи переменных и их обработка на сервере более, менее понятна. Успехов!
__________________
Лучше сидеть в маленькой душной пивной , чем работать на большом светлом заводе... |
|
Реклама: | Рекомендуем супермаркет KNS.ru - мфу куосера - более 50-ти тысяч наименований товаров со склада в Москве | кт зубов дешево | Битрикс24 и JivoSite | Conecte Asana a Smarty CRM | Рекомендуем - монитор 17 дюймов купить - Подарок каждому покупателю! |
03.07.2005, 14:59 | #2 | |||||||||||||||||||
Guest
Сообщений: n/a
|
Re: Быстрый старт в Php Часть2/дополнение
а расскажи поподроднее про использование переменных окружения и про их типы
[ADDED=Baby©]1120388998[/ADDED] PS а можно немного разжевать? каково отличие пост от гет? что проверяет функция debug()?
а можно с комментариями? Зы. в этих примерах такие же ошибки как и тут: http://www.nowa.ru/showthread.php?t=9617 Последний раз редактировалось Baby©; 03.07.2005 в 15:09.. |
|||||||||||||||||||
03.07.2005, 23:02 | #3 | |||||||||||||||||||||||
Ответ: Быстрый старт в Php Часть2/дополнение
Очень просто, в PHP есть такая функция phpinfo() Ее можно вставить в любой скрипт, а можно выполнить просто так. Она показывает много всего, а где-то внизу и переменные окружения, а конкретнее в разделе PHP Variables Функция debug() просто обращается к переменным PHP и выдает их на гора. В последнем примере это очень наглядно показано, надо только cut©&save + click :дразню Отличие POST и GET. Грубо говоря переменные методом GET передаются на сервер вместе с адрессной строкой, и поэтому видны в браузере, а если использовать метод POST, то переменные уходят в заголовке HTTP (!), и не видны в браузере, но всегда необходимо отправлять данные через форму... .
__________________
Лучше сидеть в маленькой душной пивной , чем работать на большом светлом заводе... Последний раз редактировалось ana; 05.07.2005 в 12:59.. |
||||||||||||||||||||||||
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Быстрый старт GSM модуля на ASUS P535 | pupik2 | КПК | 8 | 20.03.2010 10:01 |
Быстрый старт в Php | ana | PHP | 34 | 15.12.2009 22:54 |
Быстрый старт в Php. Часть 2ая | ana | PHP | 5 | 21.03.2006 23:12 |
Быстрый старт в Php. Часть 3. Последняя. | ana | PHP | 0 | 07.07.2005 01:51 |
|
|