![]() |
|
| Правила Форума редакция от 22.06.2020 |
|
|||||||
|
|
Окажите посильную поддержку, мы очень надеемся на вас. Реквизиты для переводов ниже. |
|
![]() |
|
|
Опции темы | Опции просмотра |
Language
|
|
|
#1
|
|
Немного еше о формах. А именно о том, как передаются данные из формы, на сервер.
Есть два основных метода передачи> 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;
}
//
?>
Если это кому-то поможет в отладке программ, буду рад! Надеюсь процесс передачи переменных и их обработка на сервере более, менее понятна. Успехов! ![]()
__________________
Лучше сидеть в маленькой душной пивной , чем работать на большом светлом заводе...
|
|
|
|
|
| Реклама: |
|
|
#2
|
|||||||||||||||||||
|
Guest
Сообщений: n/a
|
а расскажи поподроднее про использование переменных окружения и про их типы
[ADDED=Baby©]1120388998[/ADDED] PS а можно немного разжевать? каково отличие пост от гет? что проверяет функция debug()?
а можно с комментариями? Зы. в этих примерах такие же ошибки как и тут: ![]() http://www.nowa.ru/showthread.php?t=9617 Последний раз редактировалось Baby©; 03.07.2005 в 14:09.. |
|||||||||||||||||||
|
|
|
#3
|
|||||||||||||||||||||||
Очень просто, в PHP есть такая функция phpinfo() Ее можно вставить в любой скрипт, а можно выполнить просто так. Она показывает много всего, а где-то внизу и переменные окружения, а конкретнее в разделе PHP Variables Функция debug() просто обращается к переменным PHP и выдает их на гора. В последнем примере это очень наглядно показано, надо только cut©&save + click :дразню Отличие POST и GET. Грубо говоря переменные методом GET передаются на сервер вместе с адрессной строкой, и поэтому видны в браузере, а если использовать метод POST, то переменные уходят в заголовке HTTP (!), и не видны в браузере, но всегда необходимо отправлять данные через форму... .
__________________
Лучше сидеть в маленькой душной пивной , чем работать на большом светлом заводе...
Последний раз редактировалось ana; 05.07.2005 в 11: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 00:51 |
|
|