Autor Zpráva
tomas3333
Profil
Čo je lepšie použiť na "vypnutie" magic quotes gpc? Manuál uvádza tento kód:

if (get_magic_quotes_gpc()) {
    function stripslashes_deep($value)
    {
        $value = is_array($value) ?
                    array_map('stripslashes_deep', $value) :
                    stripslashes($value);

        return $value;
    }

    $_POST = array_map('stripslashes_deep', $_POST);
    $_GET = array_map('stripslashes_deep', $_GET);
    $_COOKIE = array_map('stripslashes_deep', $_COOKIE);
    $_REQUEST = array_map('stripslashes_deep', $_REQUEST);
}


No našiel som aj alternatívy ako napríklad skript od Jakuba Vránu (http://php.vrana.cz/vypnuti-magic_quotes_gpc.php):

if (get_magic_quotes_gpc()) {
    $process = array(&$_GET, &$_POST, &$_COOKIE, &$_REQUEST);
    while (list($key, $val) = each($process)) {
        foreach ($val as $k => $v) {
            unset($process[$key][$k]);
            if (is_array($v)) {
                $process[$key][stripslashes($k)] = $v;
                $process[] = &$process[$key][stripslashes($k)];
            } else {
                $process[$key][stripslashes($k)] = stripslashes($v);
            }
        }
    }
    unset($process);
}
Jan Tvrdík
Profil
tomas3333:
Uvedené ukázky pouze odstraňují chování magic quotes gpc. Pokud máš možnost, tak je lepší tu direktivou rovnou vypnout.
Z uvedených dvou skriptů bych si vybral variantu od Jakuba Vrány, což osobně považuji za dostatečnou garanci kvality.
tomas3333
Profil
keby som mohol vypnut, tak samozrejme vypnem :)
V com presne je rozdiel v prvom a druhom skripte? ved to robi to iste dvomi odlisnymi sposobmi nie?
Jan Tvrdík
Profil
tomas3333:
Citace z tebou odkázaného článku:
Řešení pomocí rekurzivní funkce je potenciálně nebezpečné kvůli možnému vyčerpání paměti, jak ukazuje Ilia:
file_get_contents("http://www.example.com/?a" . str_repeat("[]", 1024) . "=1");
tomas3333
Profil
jo, dik, nebol som si celkom isty, ci tym mysli prave array_map.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0