Компьютерный форум NoWa.cc Здесь может быть Ваша реклама
Правила Форума
редакция от 22.06.2020
Портал .::2BakSa.WS::.
Вернуться   Компьютерный форум NoWa.cc > В помощь вебмастеру > Веб - Программирование > PHP

Уважаемые пользователи nowa.cc и 2baksa.ws. У нас сложилось тяжёлое финансовое положение. Мы работаем для вас вот уже более 15 лет и сейчас вынуждены просить о помощи. Окажите посильную поддержку проектам. Мы очень надеемся на вас. Реквизиты для переводов ниже.
Webmoney Webmoney WMZ: 826074280762 Webmoney WME: 804621616710
PayPal PayPal_Email E-mail для связи по вопросу помощи
Кошелёк для вашей помощи YooMoney 4100117770549562
YooMoney Спасибо за поддержку!
Ответ
 
Опции темы Опции просмотра Language
Старый 03.07.2005, 13:42   #1
Модератор
 
Аватар для ana
 
Пол:Мужской
Регистрация: 20.10.2004
Адрес: Germany
Сообщений: 543
Репутация: 312
По умолчанию Быстрый старт в 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>
и в строчке <FORM method="GET">
поменяем 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("&nbsp;&nbsp;&nbsp;&nbsp;+<br>");
                           printArray($value,"&nbsp;&nbsp;&nbsp;&nbsp;".$key);
                           echo("&nbsp;&nbsp;&nbsp;&nbsp;_____________________<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("&nbsp;&nbsp;&nbsp;&nbsp;+<br>");
                           printArray($value,"&nbsp;&nbsp;&nbsp;&nbsp;".$key);
                           echo("&nbsp;&nbsp;&nbsp;&nbsp;_____________________<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("&nbsp;&nbsp;&nbsp;&nbsp;+<br>");
                           printArray($value,"&nbsp;&nbsp;&nbsp;&nbsp;".$key);
                           echo("&nbsp;&nbsp;&nbsp;&nbsp;_____________________<br>");
                        }// endif
         }// endforeach
return;
}
//
?>
Как говориться, без комментариев.

Если это кому-то поможет в отладке программ, буду рад!

Надеюсь процесс передачи переменных и их обработка на сервере более, менее понятна.


Успехов!
__________________
Лучше сидеть в маленькой душной пивной , чем работать на большом светлом заводе...
ana вне форума
 
Ответить с цитированием Вверх
Здесь может быть Ваша реклама
Здесь может быть Ваша реклама


Реклама: столы трансформерыСтолы r-homeDelta RBM43samsung 970 evoConecte FreshBooks a GetResponse


Старый 03.07.2005, 13:59   #2
Baby©
Guest
 
Сообщений: n/a
По умолчанию Re: Быстрый старт в Php Часть2/дополнение

а расскажи поподроднее про использование переменных окружения и про их типы

[ADDED=Baby©]1120388998[/ADDED]
PS

а можно немного разжевать?
каково отличие пост от гет?

что проверяет функция debug()?

Цитата:
Как говориться, без комментариев.

а можно с комментариями?

Зы. в этих примерах такие же ошибки как и тут:
http://www.nowa.ru/showthread.php?t=9617

Последний раз редактировалось Baby©; 03.07.2005 в 14:09..
  Ответить с цитированием Вверх
Старый 03.07.2005, 22:02   #3
ana
Модератор
 
Аватар для ana
 
Пол:Мужской
Регистрация: 20.10.2004
Адрес: Germany
Сообщений: 543
Репутация: 312
По умолчанию Ответ: Быстрый старт в Php Часть2/дополнение

Цитата:
Сообщение от Baby©
а расскажи поподроднее про использование переменных окружения и про их типы

Очень просто, в PHP есть такая функция phpinfo()

Ее можно вставить в любой скрипт, а можно выполнить просто так.
Она показывает много всего, а где-то внизу и переменные окружения,
а конкретнее в разделе PHP Variables

Функция debug() просто обращается к переменным PHP и выдает их на гора.

В последнем примере это очень наглядно показано, надо только cut&copy&save + click :дразню

Отличие POST и GET. Грубо говоря переменные методом GET передаются на сервер вместе с адрессной строкой, и поэтому видны в браузере,
а если использовать метод POST, то переменные уходят в заголовке HTTP (!), и не видны в браузере, но всегда необходимо отправлять данные через форму... .
__________________
Лучше сидеть в маленькой душной пивной , чем работать на большом светлом заводе...

Последний раз редактировалось ana; 05.07.2005 в 11:59..
ana вне форума
 
Ответить с цитированием Вверх
Ответ


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Быстрый старт GSM модуля на ASUS P535 pupik2 КПК 8 20.03.2010 09:01
Быстрый старт в Php ana PHP 34 15.12.2009 21:54
Быстрый старт в Php. Часть 2ая ana PHP 5 21.03.2006 22:12
Быстрый старт в Php. Часть 3. Последняя. ana PHP 0 07.07.2005 00:51

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 02:12. Часовой пояс GMT +3.


Copyright ©2004 - 2024 2BakSa.WS

Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2024, vBulletin Solutions, Inc. Перевод: zCarot
Время генерации страницы 0.14801 секунды с 11 запросами