Экранирование кавычек - переход с PHP4 на PHP5 - PullRequest
1 голос
/ 10 февраля 2012

Я унаследовал сайт php4, который должен работать на моем сервере PHP5, я решил большинство проблем, но не могу понять, что автор пытался сделать здесь. Ну, если быть точным, он пытался процитировать представленный текст, но я не уверен, как эта функция должна работать и как я должен делать это в PHP5?

# Function to safely add slashes when magic quotes is switched off

function safe_slash($string)
{
  if (!get_magic_quotes_gpc())
  {
    $string = addslashes($string);
  }

  return $string;
} 

Ответы [ 2 ]

2 голосов
/ 10 февраля 2012

По умолчанию в PHP4 включена опция в PHP.ini, которая называется magic_quotes_gpc, она будет addslashes для всех $_POST/$_GET переменных.

Этот код просто проверяет, выключено ли значение magic_quotes_gpc, и если это так, то добавляет косую черту к передаваемой строке $.

Это должно работать в PHP4 и PHP5 (в PHP6 magic_quotes_gpc будет удален, я считаю). Однако не рекомендуется полагаться на него, изначально он был «защищен» от внедрения SQL, но было признано, что он неадекватен.

0 голосов
/ 10 февраля 2012
$_POST = self::addSlashesRecursive($_POST);
$_GET = self::addSlashesRecursive($_GET);
$_COOKIE = self::addSlashesRecursive($_COOKIE);

function addSlashesRecursive($s)
{
    if (get_magic_quotes_gpc()) {
        return $s;
    }
    if (is_string($s)) {
        return addslashes($s);
    } else if (is_array($s)) {
        return array_map(array('addSlashesRecursive'), $s);
    }
    return $s;
}

Но, на мой взгляд, будет лучше изменить ваш код.В PHP6 magic_quotes будут удалены вообще.

...