IMHO.WS

IMHO.WS (http://www.imho.ws/index.php)
-   Веб-программирование (http://www.imho.ws/forumdisplay.php?f=29)
-   -   о REGISTER_GLOBALS и HTTP_XXXX_VARS (http://www.imho.ws/showthread.php?t=65278)

Psionic Vision 30.07.2004 02:56

о 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?

Спасибо.

Sheryld 30.07.2004 03:43

ну как же это не объясняют, там горы написаны. да и тут уже не раз было сказано.

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.

но я уже писал тут, что при разборе нужно проверять не только значение ключа, но и само существование этого ключа...

Psionic Vision 30.07.2004 06:40

а КАК их отключить, если я не админ сервера?

Что такое POST и GET?
Get - Это то, переменные из командной строки бразуера,
а POST - это переменные, отправленные полями формы, так?

InsaneX 30.07.2004 06:43

delaesh .htaccess file i tam pishesh php_flag register_globals off

is_absent 30.07.2004 10:47

InsaneX
это пройдет, если на твой хост стои AllowOverride All. в остальных случаях апач будет сильно ругаться...

Psionic Vision 30.07.2004 17:34

Прошло.
Теперь 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 и чем он отличается от этих двух?

Hubbitus 30.07.2004 17:39

Цитата:

Neo:
Если я все правильно понял, то независимо от включенных register globals, функция sensitivedata() не запустится и переменная somevar не установится, если я запущу скрипт как script.php?somevar=somevalue?
Правильно понял.
Именно, $_GET['somevar'] не равно $_POST['somevar'].


Часовой пояс GMT +4, время: 00:51.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.