register_globals, magic_quotes

  • Автор темы tristram
  • Дата начала

tristram

Guest
register_globals, magic_quotes

Извините если оффтоп, но я увидел много просьб связанных с register_globals и magic_quotes.
Решил привести код который по моим представлением должен быть в начале любой программы, он нейтралирует magic_quotes и импортрует все переменные окружения ($_GET, $_POST, $_COOKIE).
PHP:
@ignore_user_abort(true);
@set_magic_quotes_runtime(0);
@set_time_limit(0);
if (!ob_get_contents()) {@ob_start(); @ob_implicit_flush(0);}
if(!ini_get("register_globals")) {import_request_variables("GPC");}
$starttime = getmicrotime();
if (get_magic_quotes_gpc())
{
if (!function_exists("strips"))
{
 function strips(&$el)
 {
  if (is_array($el)) {foreach($el as $k=>$v) {strips($el["$k"]);} }
  else {$el = stripslashes($el);}
 }
}
strips($_REQUEST);
}
foreach($_REQUEST as $k=>$v) {if (!isset($$k)) {$$k = $v;}}
 

Kelkos

Сам себе программер
Решил привести код который по моим представлением должен быть в начале любой программы
Может ненадо? Может надо учиться работать с отключенным register_globals? Более того, мне пришлось использовать что то типа $_MYPOST ($_MYPOST=$_POST), т.к. все операции по отслеживанию слэшей и пр. на массиве $_POST могут привести к тому, что какой то гадский скрипт, загружаемый после моих проверок тоже будет выполнять такую же проверку и может получиться двойное добавление слэшей, например. (поясню.. после моего скрипта инициализации и фильтрации передаваемых данных может инклюдиться скрипт баннерообменки, например.. и там все действия могут проводится ещё раз.. будет совсем плохо, когда слэши продублируются..)
 

tristram

Guest
Kelkos
тогда не продублируются а два раза удалятся...
 

Frol

Новичок
ой.
у тебя редактор что-ли автоматом ставит @ перед вызовом функций?
 

tristram

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

Nirva

Dmitry Polyakov
tristram
дурная практика. надо отучивать от использования подобных вещей, а не показывать, как "с этой гадостью" работать.
 

tristram

Guest
ignore_user_abort(true) делает так что при обрыве связи с клиентом, программа продолжает работать.
set_time_limit(0) снимает ограничение времени исполнения скрипта
 

Screjet

Новичок
tristram
Похоже ты и не сталкивался с ситуациями, когда "бывает полезно".
По поводу (auto) strips $_REQUEST. Ты не учел, что уровень вложенности массивов может быть более одного, значит это только для тебя полезно. Смысл копировать $_REQUEST в $GLOBALS? Снова только тебе это нужно..
Вобщем код твой не выдерживает никакой критики и в большей степени вреден, чем полезен.
 

tristram

Guest
Screjet
во-первых он поддерживает вложенность строчкой
PHP:
if (is_array($el)) {foreach($el as $k=>$v) {strips($el["$k"]);} }
, во вторых смысл есть импортировать глобалсы.
 

Screjet

Новичок
tristram
да, рекурсии незаметил.
В любом случае опцию лучше использовать в
.htaccess
Код:
php_flag magic_quotes_gpc "Off"
Там же включать/выключать глобалсы.
Код:
php_flag register_globals "Off"
И учись красиво оформлять код.
 

SiMM

Новичок
> я пишу в обычном блокноте. просто там действительно надо глушить возможные ошибки
Мощно завернул. Внушает. Осталось только объяснить, какая связь между блокнотом и ошибками.
tristram, специально для таких как ты написан PHP FAQ.
 

tristram

Guest
под словом "там" я имел в виду не блокнот а скрипт =)))
 

SiMM

Новичок
> под словом "там" я имел в виду не блокнот а скрипт =)))
В рабочем скрипте ошибок быть не должно. И вообще они не так гасятся.
 
Сверху