![]() |
|
||||||||||
|
|||||
|
Регистрация: Jul 2002
Сообщений: 82
|
Здравствуйте! Все делаю по книге и хочу вывести список переменных окружения, но что-то он не так делает:
--------------------------------------------------- <? $user1 ="Bob"; $user2 ="Qwe"; foreach ($GLOBALS as $key=>$value) { print " $key : $value <br>"; } ?> Он мне на это выдает следующую страницу: HTTP_POST_VARS : Array _POST : Array HTTP_GET_VARS : Array _GET : Array HTTP_COOKIE_VARS : Array _COOKIE : Array HTTP_SERVER_VARS : Array _SERVER : Array HTTP_ENV_VARS : Array _ENV : Array HTTP_POST_FILES : Array _FILES : Array _REQUEST : Array GLOBALS : Array user1 : Bob user2 : Qwe key : user2 value : user2 Маловато будет... Что-то тут не так (Нет хотябы $HTTP_USER_AGENT). Да и откуда вообще последние 2 строчки взялись? ------------------------------------------- Строчки (или хотябы одна из них чтоли, не знаю) по моему разумению должны вывести Имя браузера: <? print "$HTTP_USER_AGENT"; print "$GLOBALS[$HTTP_USER_AGENT]"; ?> Дык нет - вообще ничего не выводится... -------------------------------------------- В книге написано, что цитирую: "В программе обращаемся к двум переменным $user и $address. Вы наверное догадались, что в этих переменных записаны данные, которые пользователь указал в текстовом поле "user" и "address". Обработка форм на PHP4 действительно настолько проста. Все данные, переданные пользователем, становятся доступными программе в виде глобальных переменных, имена которых совпадают с именами соответствующих элементов HTMLформ" Вот страница с формой: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Untitled Document</title> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> </head> <body> <form action="form.php" method="get"> <input name="user" type="text"> <br> <textarea name="address" cols="40" rows="5"> </textarea> <br> <input name="" type="submit" value="Go"> </form> </body> </html> Вот form.php: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Untitled Document</title> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> </head> <body> <? print "Your name is: $user<br>"; print "Your address is: $address<br>"; ?> </body> </html> Так выводится только: Your name is: Your address is: При этом в строке адреса я явно вижу переданные элементы: http://localhost/php/glava9/form.php...e&address=ewrw ---------------------------------------- причем: <? foreach ($HTTP_GET_VARS as $key=>$value) { if (gettype ($value) == "array") { print "$key == \n"; foreach ($value as $a) { print "$a "; } } else { print "$key == $value<br>"; } } ?> все прекрасно выводит: name == werewe address == ewrw products == qwe qwe3 qwe4 Помогите пожалуйста разобраться.... |
|
|||||
|
[+1 23.05.11]
Регистрация: Dec 2001
Сообщений: 4,159
|
Интересно, к выходу сельмой версии народ уже научится читать про register_globals?
![]() Для кого, интересно, в комплекте кладут news.txt? Для дедушки Пушкина?
__________________
GIT d++ s++:++ a C++$ UB++ P++ L+ E+ W+++ N++ w++ O+ M V- t-- 5-- X+ R+++ tv- b+++ D++ Последний раз редактировалось Crazy; 20.09.2003 в 13:38. |
|
|||||
|
[+1 23.05.11]
Регистрация: Dec 2001
Сообщений: 4,159
|
Цитата:
__________________
GIT d++ s++:++ a C++$ UB++ P++ L+ E+ W+++ N++ w++ O+ M V- t-- 5-- X+ R+++ tv- b+++ D++ |
|
|||||
|
Регистрация: Jul 2002
Сообщений: 82
|
Да сам разобрался, просто совершенно случайно в книге наткнулся через пару глав впереди после работы с формами, ну кто так книги пишет...
все заработало.....и список переменных окр-я на 2 стр вывел... только откуда все-таки эти 2 строчки беруться? key : user2 value : user2 а при включении этих самых register_globals безопасность я так понимаю полностью утрачивается? а если не включать - то только через HTTP_GET_VARS я смогу получать доступ к введенным в форме данным, так? (при этом как в перле разделять их и по переменным распихивать...) |
|
|||||
|
С регистр_глобалз надо покончить раз и на всегда ... РНР4 разкладывает всю "пойманую" информацию в хэши $_SERVER (переменные ЦГИ и многое другое), $_POST (данные присланые подчти одноименным методом), $_GET (тоже самое что и _ПОСТ только с другим одноименным методом).
Что-бы вывести информацию переменной name присланной по посто делаем : и все на девять букв больше чем зато безопасно и будет работать (теоритически) во всех грядущих версиях ПХП. Так что не надо ничего парсить как в Перле ... А user2 это и есть, скорее всего, один из потенциальных экплоитов ![]() |
|
|||||
|
Регистрация: Jul 2002
Сообщений: 82
|
Примного благодарен
всем потрудившимся чиркануть ответ. |
![]() |
Часовой пояс GMT +4, время: 05:57. |
|
|
« Предыдущая тема | Следующая тема » |
|
|