Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Взятие значений переменных с строки браузера.  (Прочитано 17307 раз)
0 Пользователей и 3 Гостей смотрят эту тему.
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« : 28-04-2004 14:24 » new

Столкнулся с тем, что при наборе http://shelek.com/test.php?test_var=10
значение $test_var  - в частности у меня дома и на мастерхосте равно 10 без всяких доп. ухищрений!

Но на рабочем компе и иногда читал про такую проблему, когда для получения значений таких переменных требуются определенные телодвижения!!!

Расскажите поподробнее - дабы не было потом мучительно и больно!!!!
Записан

А птичку нашу прошу не обижать!!!
Skubent
Гость
« Ответ #1 : 29-04-2004 06:35 » 

Гром, ну уж тебе-то RTFM говорить Улыбаюсь

If the register_globals directive is set, then these variables will also be made available in the global scope of the script; i.e., separate from the $HTTP_*_VARS arrays. This feature should be used with care, and turned off if possible; while the $HTTP_*_VARS variables are safe, the bare global equivalents can be overwritten by user input, with possibly malicious intent. If you cannot turn off register_globals, you must take whatever steps are necessary to ensure that the data you are using is safe.

Проще говоря, ежели в конфигурации php та самая регистер_глобалс включена, то переменые из запроса (хоть GET, хоть POST) существуют в теле скрипта, если выключена, то только в HTTP_*VARS массивах.
Записан
Fireworm
Гость
« Ответ #2 : 29-04-2004 08:06 » 

Или в массивах $_GET и $_POST, которые к томуже являются супер глобальными, т.е. доступны в любых методах-функциях.
И кстати на подобный вопрос я уже не мение 10 раз отвечали на этом форуме... Улыбаюсь
Записан
Антон (LogRus)
Глобальный модератор

ru
Offline Offline
Пол: Мужской
Внимание! Люблю сахар в кубиках!


WWW
« Ответ #3 : 29-04-2004 09:08 » 

Гром, уже обсуждалось
https://forum.shelek.ru/index.php/topic,3081.0.html
провернно мной  Отлично
Записан

Странно всё это....
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #4 : 29-04-2004 09:47 » 

Skubent, если я весь форум буду лопатить у меня точно на все времени не хватит - а в вебе я новичек - просто мне счас локально на работе серверок настроить на работу надоть - где и как что надо сменить - что бы все переменные зажили в теле скрипта Не понял?
Записан

А птичку нашу прошу не обижать!!!
Антон (LogRus)
Глобальный модератор

ru
Offline Offline
Пол: Мужской
Внимание! Люблю сахар в кубиках!


WWW
« Ответ #5 : 29-04-2004 10:00 » 

Гром, какойты ленивый Улыбаюсь
вот тебе проверенный метод:
это import_request_variables("gG", "rvar_");
делает доступными все переменные полученные через GET или POST
gG - get GET
gP - get POST
rvar_ - этот префикс появится перед всеми пременными, например:
запрос http://shelek.com/forum/viewtopic.php?foo1=value1&foo2=value2&foo2=value2
обработка
import_request_variables("gG", "rvar_");
print $rval_foo1;
print $rval_foo2;
print $rval_foo3;

пременные
$HTTP_GET_VARS[]
$HTTP_POST_VARS[]
$HTTP_COOKIE_VARS[]
$HTTP_ENV_VARS[]
$HTTP_SERVER_VARS[]
$HTTP_POST_FILES[]
могут быть недоступны если не установленно в настройках сервера  track_vars = true
Код:

track_vars  boolean

    If enabled, GET, POST and cookie input can be found in the global associative arrays $HTTP_GET_VARS, $HTTP_POST_VARS and $HTTP_COOKIE_VARS, respectively.
Записан

Странно всё это....
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #6 : 29-04-2004 10:23 » 

LogRus, я правда не знаю - я не ленивый - да и где в апач + php собранный в виде модуля искать вот эту строчку???
Записан

А птичку нашу прошу не обижать!!!
Антон (LogRus)
Глобальный модератор

ru
Offline Offline
Пол: Мужской
Внимание! Люблю сахар в кубиках!


WWW
« Ответ #7 : 29-04-2004 10:46 » 

Гром, а ты сделай чтобы везде работало и всё
в начале скрипта поставь например
import_request_variables("gG", "");
и не заморачивайся где это настраивается я незнаю. но поищу
Записан

Странно всё это....
Антон (LogRus)
Глобальный модератор

ru
Offline Offline
Пол: Мужской
Внимание! Люблю сахар в кубиках!


WWW
« Ответ #8 : 29-04-2004 10:56 » 

Гром, нашел.
находится это в файле конфигурации php.ini или еще каком можно увидеть через phpinfo().
но везде написано что начиная с версии 4.0.3 переменная track_vars включена поумолчанию.
Записан

Странно всё это....
Skubent
Гость
« Ответ #9 : 29-04-2004 10:59 » 

register_globals = On
в php.ini должно быть.
Записан
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #10 : 29-04-2004 11:18 » 

LogRus, проблема в том, что php.ini не могу найти - я собрал модулем - phpinfo выдал путь но там файла такого нету Жаль мож его создать!!!

Мысль чтоб везде работало - это хорошо - наверное так и сделаю!!! Проверю!
Записан

А птичку нашу прошу не обижать!!!
Антон (LogRus)
Глобальный модератор

ru
Offline Offline
Пол: Мужской
Внимание! Люблю сахар в кубиках!


WWW
« Ответ #11 : 29-04-2004 11:29 » 

Гром, наверняка можно создать.
Skubent, раскажи про register_globals а то я чего так и не догнал чего оно даёт.
Записан

Странно всё это....
Антон (LogRus)
Глобальный модератор

ru
Offline Offline
Пол: Мужской
Внимание! Люблю сахар в кубиках!


WWW
« Ответ #12 : 29-04-2004 11:31 » 

Гром, скопируй его туда со своей локальной машины.
Записан

Странно всё это....
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #13 : 29-04-2004 11:33 » 

Получилось - всем спасиба!!!!
Записан

А птичку нашу прошу не обижать!!!
Антон (LogRus)
Глобальный модератор

ru
Offline Offline
Пол: Мужской
Внимание! Люблю сахар в кубиках!


WWW
« Ответ #14 : 29-04-2004 11:36 » 

Гром, э так не пойдет. Сам всем всегда говорит что решил проблему поделись с другими. а сам игнорирует.
Записан

Странно всё это....
Fireworm
Гость
« Ответ #15 : 29-04-2004 11:42 » 

Гром, Лучше всетаки выключить register_globals, и пользоваться $_GET и $_POST. т.к. в противном случает получается потенциальная очень большая дыра...
Записан
Skubent
Гость
« Ответ #16 : 29-04-2004 12:04 » 

LogRus,
Массивы HTTP_*_VARS доступны всегда. Кстати, _GET и _POST рекомендуется рассматривать как алиасы оных, там какие-то отличия есть, но разработчики обещают к очередной версии их убрать совсем. Различия, в смысле.
При выключенной register_globals переменные из запроса находятся там и только там.
При включенной register_globals переменные запроса сразу же доступны в скрипте. Что не есть хорошо, ибо в этом случае нет разницы между GET и POST переменными. Более того, совсем нехорошо то, что клиент, подавая запрос, может затереть (либо исказить) используемые в скрипте переменные. Как заметил Fireworm, это потенциальная дыра.

Да, Гром, поскольку на мастерхосте указанная переменная включена, я рекомендовал бы в .htaccess прописать строчку
php_value register_globals off
Записан
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #17 : 29-04-2004 13:59 » 

LogRus, ну дык я поставил строку import_request_variables("gG", ""); и все заработало в скрипте!

По конфигурации php.ini так и не нашел - так как библиотека собирается как модуль для апач!!!!

Fireworm, я это делаю локально - т.е. иногда в окнах между работой и работой хочется пописать свой форум - я его начал потихоньку делать - но видимо придется одному в разработке опять пусто! Ну насколько надо быть инертными - дальше слов дело не идет Жаль

Skubent, я проверю masterhost но дело в том, что и сайт пока построен на таком же вот движке !!!! Т. е. все переменные идут как бы предопределенными!


В чем дыра - показывайте  - это первый вопрос!

Во вторых шла речь о rack_vars - как онги связаны с register_globals ! Это два.

И третье - сайт написан с использованием переменных из GET& POST напрямую!!!!
Я могу переделать это но пока не мне надо уяснить - что бы весь движок сделать одинаковым как форум так и сайт - я ведь их связываю между собой (см тему в форуме Разрботка) - и тут надо обдумать как это реализовать!!!!

Но это уже офтопик пошел  :?  и все таки - я скажу - мне нужны советы, дабы полный нормальный движок вышел уже настолько крутым - что ой!!! Улыбаюсь
Вернее - что бы все возможности и пожелания удовлетворить - давайте пишите (только не сюда а в Разработку!)
Записан

А птичку нашу прошу не обижать!!!
Skubent
Гость
« Ответ #18 : 30-04-2004 06:34 » 

Гром, на мастерхосте php собран по умолчанию, с включенной register_globals. Это совершенно точно, у меня там крутится пяток сайтов.

Потенциальная дыра - рассказываю.
Допустим у тебя данные о пользователе хранятся в сессии. Ты, как правильный, делаешь @session_start(); и начинаешь использовать переменную, допустим, $userid. Куль-хацкер, формируя запрос http://что-то-там/logon.php?userid=1 присваивает свое значение указанной переменной.
GET и POST переменные перекрывают значения из сессий и из куков. Как этим пользоваться - сами, надеюсь, понимаете.

Далее, разговор о track_vars можно считать оконченым с момента появления php 4.0.3 - там эта директива включена _всегда_. До этого она контролировала будут ли заполняться массивы HTTP_GET_VARS, HTTP_POST_VARS и HTTP_POST_FILES.
register_globals контролирует, будут ли переменные из запроса объявлены в теле скрипта как глобальные (вот только точно не помню, переменные или константы).
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines