![]() |
о REGISTER_GLOBALS и HTTP_XXXX_VARS
Пару вопросов. Мануалы ничего толком не объясняют, так что:
1. Что такое register_globals? 2. Что таоке http_post_vars и http_get_vars и почему рекомендуется использовать $http_post_vars['somevar'] вместо $somevar? 3. Если я правильно понял, то при запросе script.php?somevar=somevalue $http_post_vars['somevalue'] == NULL? Спасибо. |
ну как же это не объясняют, там горы написаны. да и тут уже не раз было сказано.
register_globals - если включено, то переменные Environment, GET, POST, Cookie, Server регистрируются, как глобальные. пример: index.php?var=value echo $var //value рекомендуется отключать это дело, т.к. это потенциальная дыра. $HTTP_GET_VARS и т.д. - это глобальный хэш(в терминологии php это PHP Superglobals). работать с переменными Environment, GET, POST, Cookie, Server рекомендуется именно через эти самые хеши, при это отключив register_globals. index.php?var=value echo $HTTP_GET_VARS['var'] //value подробнее и с примерами расписано в мане. да и тут я помню тоже писал на эту тему... p.s. query string (это то, что стоит за ? в URL) состоит обычно из пар variable/value. пример: index.php?variable=value хэш, наиболее удобная форма хранения такого рода данных... $_GET['variable'] <-- ключ - variable, по которому доступно значение - value. но я уже писал тут, что при разборе нужно проверять не только значение ключа, но и само существование этого ключа... |
а КАК их отключить, если я не админ сервера?
Что такое POST и GET? Get - Это то, переменные из командной строки бразуера, а POST - это переменные, отправленные полями формы, так? |
delaesh .htaccess file i tam pishesh php_flag register_globals off
|
InsaneX
это пройдет, если на твой хост стои AllowOverride All. в остальных случаях апач будет сильно ругаться... |
Прошло.
Теперь phpinfo() показывает Register Globals: Local Value off, Master Value on Ура! Это же должно на всех платных хостах работать? Теперь еще вот вопрос. Даже если register globals включен, а у меня есть форма <form method=post> <input type=text name=somevar value=somevalue> <input type=submit> </form> Далее, в скрипте у меня вот что: if (isset($_POST['somevar']) { sensitivedata(); } Если я все правильно понял, то независимо от включенных register globals, функция sensitivedata() не запустится и переменная somevar не установится, если я запущу скрипт как script.php?somevar=somevalue? Если попробовать установить переменную через адресную строку, получится $_GET['somevar']==somevalue, а $_POST['somevar '] == NULL? И еще - что такое массив $_SESSION и чем он отличается от этих двух? |
Цитата:
Именно, $_GET['somevar'] не равно $_POST['somevar']. |
| Часовой пояс GMT +4, время: 00:51. |
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.