Nasıl zamanında PHP sihirli tırnak devre dışı bırakabilirsiniz?

5 Cevap php

Ben bazı farklı kurulumları çalıştırmak olacak PHP komut kümesi yazıyorum, bazıları (korku) üzerinde sihirli tırnak barındırma paylaştı. PHP ve Apache yapılandırmasını kontrol yeteneği olmadan, ben zamanında PHP tırnak devre dışı bırakmak için script'lerime bir şey yapabilirim?

Kodu ya da sihirli tırnak olmayabilir olabilir farklı bilgisayarlar üzerinde aynı komut kullanın böylece sihirli tırnak, üzerinde farz olmasaydı daha iyi olurdu.

5 Cevap

Magic quotes çalışma devre dışı olamaz, ama bunu devre dışı bırakmak için dizinde bir. Htaccess dosyasını kullanabilirsiniz.

php_flag magic_quotes_gpc off

Bu olan tek gerçek avantajı bir dizine kez koyabilirsiniz olduğunu ve bütün dizin ve alt dizinleri için çalışıyor. Gerçekten güzel sen yazmadın bir uygulama için bu ihtiyaç ve sihirli tırnak olmadan işe almak gerekiyorsa.

Ben Gumbo ile benzer bunun için küçük bir komut dosyası var (ama tabii ben benimkini :) iyi gibi:

if(function_exists('get_magic_quotes_runtime') && get_magic_quotes_runtime())
    set_magic_quotes_runtime(false);

if(get_magic_quotes_gpc()) {
    array_stripslashes($_POST);
    array_stripslashes($_GET);
    array_stripslashes($_COOKIES);
}

function array_stripslashes(&$array) {
    if(is_array($array))
        while(list($key) = each($array))
            if(is_array($array[$key]))
                array_stripslashes($array[$key]);
            else
                $array[$key] = stripslashes($array[$key]);
}

Bu zamanında yapılamaz: (

PHP 5.3 + için diğer bir çözüm:

if (get_magic_quotes_gpc() === 1)
{
    $_GET = json_decode(stripslashes(preg_replace('~\\\(?:0|a|b|f|n|r|t|v)~', '\\\$0', json_encode($_GET, JSON_HEX_APOS | JSON_HEX_QUOT))), true);
    $_POST = json_decode(stripslashes(preg_replace('~\\\(?:0|a|b|f|n|r|t|v)~', '\\\$0', json_encode($_POST, JSON_HEX_APOS | JSON_HEX_QUOT))), true);
    $_COOKIE = json_decode(stripslashes(preg_replace('~\\\(?:0|a|b|f|n|r|t|v)~', '\\\$0', json_encode($_COOKIE, JSON_HEX_APOS | JSON_HEX_QUOT))), true);
    $_REQUEST = json_decode(stripslashes(preg_replace('~\\\(?:0|a|b|f|n|r|t|v)~', '\\\$0', json_encode($_REQUEST, JSON_HEX_APOS | JSON_HEX_QUOT))), true);
}

Tuşları, değerleri ve çok boyutlu diziler Kolları.