Глобальные переменные это глобальные проблемы

Глобальные переменные (англ. global variables) — это переменные, которые доступны в любой части скрипта.

Использование глобальных переменных выглядит достаточно привлекательным. В тоже время, легко упустить возникшую лазейку, что может привести к глобальным проблемам. Например, возьмём скрипт содержащий следующий код:

for ($i=1; $i<=5; $i++ ) $val.= $i;
echo $val;

Как вы понимаете, скрипт должен вернуть строку: 12345. Однако, в случае с глобальными переменными, появилась лазейка для наших глобальных проблем. В частности, мы не объявили переменную $val, позволив к её значению добавить другие значения. К чему это приведёт? Например, передадим скрипту переменную val со значением hi!:

http://sitename.ru/script.php?val=hi!

В результате мы получим строку: hi!12345. Конечно, я привёл не самый реальный пример, но суть вы поняли? Если да, то стоит позаботиться об отключить использование глобальных переменных, чтобы избежать глобальных проблем. Утверждение спорно, но именно об этом и пойдёт речь. И так. Как это сделать?

Для решения поставленной задачи нам понадобиться уделить внимание значению PHP-опции: register_globals, которая находится в файле php.ini. Просто присвойте ей значение: Off.

register_globals = Off

Конечно, не всегда есть возможность получить доступ к файлу php.ini. Если используется сервер Apache, то можно попробовать воспользоваться директивой php_flag в файле .htaccess.

php_flag register_globals off

В том случае если и это не возможно, можно попробовать функцию для работы с опциями PHP, а именно: ini_set().

init_set(register_globals, false);

К слову, если функции для работы с опциями PHP — работают, проверить значение register_globals, можно используя функцию ini_get().

echo 'register_globals:' . ini_get('register_globals');

Если же выше сказанное не приносит видимого результата, вам придётся быть внимательными и тщательно поработать над обеспечением безопасности.

P.S. Помните, отключение глобальных переменных не панацея от глобальных проблем!

Похожие заметки

  • Магия кавычек в PHP
    Особенности обеспечения безопасности SQL-запросов в разрезе такой особенности PHP как магические кавычки, автоматически экранирующие спецсимволы входн...
  • Устаревшие POSIX Regex функции в PHP
    Проблема устаревших php-функций, использующих POSIX Regex регулярные выражения, и промеры их решения. В частности альтернативные варианты eregi() и sp...
  • Заголовок X-Robots-Tag для Googlebot
    Что делать если META-тег ROBOTS и robots.txt игнорируются ропотом поисковой системы Google? Как вариант можно попробовать HTTP-заголовки X-Robots-Tag....
23.07.2010 Рубрика: Веб-мастеру