Использование get_magic_quotes_gpc в PHP версии 5.2.14 или эквивалент для PHP версии 6 - PullRequest
1 голос
/ 02 ноября 2010

Наш сайт использует PHP версии 5.2.14

В последнее время наш хостер, вероятно, изменил определение магической кавычки, и я предложил предлагаемое решение [code ниже]

  1. это решение подходит для PHP версии 5.2.14?
  2. Что я должен изменить при обновлении до версии PHP 6?
// Code:

function fHandleQuotes($s) {
  if (get_magic_quotes_gpc())
    return ($s);
  return (addslashes($s));
}

. . .
// Usage:

. . . 
$query = "UPDATE myTable SET myField = '" . fHandleQuotes($_POST['fieldName']) . "'";
. . . 

Ответы [ 2 ]

2 голосов
/ 02 ноября 2010

В PHP 6 magic_quotes будут удалены!
Теперь вы можете использовать эту функцию.

if(  ( function_exists("get_magic_quotes_gpc") && get_magic_quotes_gpc() ) || ini_get('magic_quotes_sybase')  ){
    foreach($_GET as $k => $v) $_GET[$k] = stripslashes($v);
    foreach($_POST as $k => $v) $_POST[$k] = stripslashes($v);
    foreach($_COOKIE as $k => $v) $_COOKIE[$k] = stripslashes($v);
}
1 голос
/ 02 ноября 2010

Прочтите это и почему вы не должны использовать магические кавычки:
http://php.net/manual/en/security.magicquotes.disabling.php

Используйте один из примеров на этой странице и замените stripslashes на addslashes. Но да, ваше решение, вероятно, работает. Хотя было бы быстрее и менее навязчиво просто использовать $_GET = array_map("addslashes", $_GET); один раз при запуске. Еще лучше было бы использовать mysql_real_escape_string вместо addslashes на них. (Но ваше соединение с базой данных должно быть уже установлено, чтобы это работало.)

Кроме того, я хотел бы рекомендовать вам спам: http://sourceforge.net/p/php7framework/wiki/input/ - потому что он позволяет постепенно переписывать ваше приложение для использования $_GET->q["fieldName"] для (не очень безопасных) полей с магическими кавычками или просто $_POST->sql["fieldName"] для (более безопасные) кодированные поля.
Вы даже можете использовать $_REQUEST->sql->always(), чтобы включить фильтр по умолчанию для всех обычных $_REQUEST["fieldName"] обращений. Хотя это может быть излишним для некоторых приложений.

...