Sihirli Tırnakların İptali

magic_quotes_gpc yönergesi sadece sistem seviyesinde etkisiz kılınabilir, çalışma anında yapılamaz. Başka bir deyişle, ini_set() işlevi bir seçenek değildir.

Örnek 1 - Sihirli tırnakların sunucu taraflı iptali

Aşağıdaki örnekte php.ini içinde bu yönergelere değer olarak Off atanmaktadır. Bu konuda daha ayrıntılı bilgi edinmek için Yapılandırma ayarlarının değiştirilmesi bölümüne bakınız.

; Sihirli tırnakların iptali
;

; Gelen GET/POST/Cookie verisi için sihirli tırnaklar
magic_quotes_gpc = Off

; Çalışma anında üretilen (SQL veya exec() kaynaklı) veri için
magic_quotes_runtime = Off

; Sybase-tarzı sihirli tırnak kullanımı (' yerine \' değil '').
magic_quotes_sybase = Off

Eğer sunucuda yapılandırma dosyasına erişim ve değişiklik mümkün değilse, .htaccess kullanmak da bir seçenektir. Örnek:

php_flag magic_quotes_gpc Off

Taşınabilir kod (her ortamda çalışan kod) yazmaya yönelik olarak, ayarların sunucu seviyesinde değiştirilmesi mümkün değilse magic_quotes_gpc yönergesi örnekteki gibi çalışma anında etkisiz kılınabilir. Bu yol fevkalade verimsizdir ancak uygun yönergeleri başka bir yerden atamaya tercih edilir.

Örnek 2 - Sihirli tırnakların çalışma anında iptali

<?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);
?>