PHP:n vanhoissa versioissa (5.3 ja aiemmat) on haitallinen ominaisuus nimeltä Magic Quotes: käyttäjien lähettämiin teksteihin ilmestyy ylimääräisiä \-merkkejä, joiden tarkoitus on parantaa tietoturvaa estämällä SQL-injektioita mutta jotka eivät itse asiassa ole millään tavalla riittäviä tähän. Ominaisuus kannattaakin poistaa käytöstä PHP:n asetuksista kohdasta magic_quotes_gpc. Jos PHP:n asetuksia ei pääse muuttamaan, voi käyttää sivun alussa seuraavaa koodia:
if (ini_get("magic_quotes_runtime")) { ini_set("magic_quotes_runtime", 0); } if (!function_exists("undoMagicQuotes") && ini_get("magic_quotes_gpc")) { ini_set("magic_quotes_gpc", 0); function undoMagicQuotes($array, $topLevel = true) { $newArray = array(); foreach ($array as $key => $value) { if (!$topLevel) { $key = stripslashes($key); } if (is_array($value)) { $newArray[$key] = undoMagicQuotes($value, false); } else { $newArray[$key] = stripslashes($value); } } return $newArray; } if (!empty($_GET)) $_GET = undoMagicQuotes($_GET); if (!empty($_POST)) $_POST = undoMagicQuotes($_POST); if (!empty($_COOKIE)) $_COOKIE = undoMagicQuotes($_COOKIE); if (!empty($_REQUEST)) $_REQUEST = undoMagicQuotes($_REQUEST); }
Koodi perustuu PHP:n manuaalissa esiteltyyn versioon mutta käyttää silmukan sijaan rekursiota ja sijaitsee funktiossa.
Nykyisissä PHP:n versioissa (5.4 ja uudemmat) ongelmaa ei enää ole lainkaan.
Aihe on jo aika vanha, joten et voi enää vastata siihen.