RFpro.ru: Программирование на PHP

  Все выпуски  

RusFAQ.ru: Программирование на PHP


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / PHP

Выпуск № 434
от 20.08.2006, 06:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 336, Экспертов: 44
В номере:Вопросов: 1, Ответов: 4


Вопрос № 52105: Здравствуйте уважаемые эксперты! Я недавно начал учить PHP, и возникла проблемка: Беру пример из електронного учебника, там пересылка данных методом GET Форма свои данные отправляет, в строке адреса написано типа http://loca...

Вопрос № 52.105
Здравствуйте уважаемые эксперты!
Я недавно начал учить PHP, и возникла проблемка:

Беру пример из електронного учебника, там пересылка данных методом GET

Форма свои данные отправляет, в строке адреса написано типа
http://localhost/action.php?HDD=200Gb&CDROM=52x

Но при выводе, ети переменные не выводятся, как будто их нет.

ЧТо я делаю не так, пожалуйста подскажите

Приложение:

Отправлен: 14.08.2006, 18:40
Вопрос задал: ANDx (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Марк Крейн
Здравствуйте, ANDx!
Надо так:
$_GET['HDD']
$_GET['CDROM']

Тогда всё будет работать.
Ответ отправил: Марк Крейн (статус: Студент)
Ответ отправлен: 14.08.2006, 18:47
Оценка за ответ: 5

Отвечает: PVS
Здравствуйте, ANDx!
Вероятно у Вас в файле php.ini выставлена настройка register_globals=Off
Если хотите, чтобы Ваш пример заработал как есть поставте register_globals=On
Если не хотите зависеть от register_globals, то поправте в скрипте $HDD на $_REQUEST['HDD'] или на $_GET['HDD'], с $CDROM - все то же.

$_REQUEST - массив данных запроса (неважно какого типа)
$_GET - массив данных GET-запроса
$_POST - массив данных POST-запроса
Ответ отправил: PVS (статус: Студент)
Ответ отправлен: 14.08.2006, 18:48
Оценка за ответ: 5

Отвечает: Галушко Павел Павлович
Здравствуйте, ANDx!
Код файла PHP должен быть таким:
<?
$HDD = $HTTP_GET_VARS['HDD'];
$CDROM = $HTTP_GET_VARS['CDROM'];
echo("<p>HDD is $HDD</p>");
echo("<p>CDROM is $CDROM</p>");
?>
Потому, что данные из форм находятся в массиве
$HTTP_GET_VARS для форм посланых по GET
$HTTP_POST_VARS для форм посланых по POST
---------
И это пройдет © надпись на кольце Соломона
Ответ отправил: Галушко Павел Павлович (статус: 2-ой класс)
Ответ отправлен: 14.08.2006, 18:52
Оценка за ответ: 5

Отвечает: NoOne
Здравствуйте, ANDx!
В общем Вам ответили верно, но есть пара замечаний.
Если значение параметра register_globals установлено в "on", будут автоматически создаваться переменные вида $имя_поля_формы при передаче формы PHP-скрипту. Казалось бы, это удобней, чем использовать нагромождения вида $_GET['имя_поля_формы'] или $_POST['имя_поля_формы'], но! Это таит в себе большие проблемы безопасности при неправильном написании скрипта. И это только во-первых. Во-вторых, в нынеразрабатываемом PHP6 параметр register_globals вообще удален и переменных $имя_поля_формы больше нет. Поэтому _НЕ_ стоит пользоваться им. Пользуйтесь $_GET, $_POST и т.д.
Второе. Ув. Галушко Павел Павлович предложил воспользоваться $HTTP_GET_VARS['HDD'] и $HTTP_GET_VARS['CDROM']. Хотя в данный момент использования $HTTP_GET_VARS вместо $_GET возможно, _НЕ_ рекомендуется его применять, т.к. этот устаревший атавизм в том же PHP6 просто отсутствует.
---------
Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (c) М.Фаулер
Ответ отправил: NoOne (статус: 1-ый класс)
Ответ отправлен: 15.08.2006, 10:28
Оценка за ответ: 5
Комментарий оценки:
Спасибо за пояснения


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.35 от 27.07.2006
Яндекс Rambler's Top100

В избранное