Sihirli tırnak etrafında çalışmak, ya da sadece onlar gidiyoruz yapmak?

4 Cevap php

Benim kod "daha taşınabilir" ve sihirli tırnak korku ile başa çıkmak mümkün, ya da ben sadece bir. Htaccess dosyası ile her zaman kapalı olduğundan emin olmak gerekir olmak için değişen değer mi?

if (get_magic_quotes_gpc()) {
    $var = stripslashes($_POST['var']);
} else {
    $var = $_POST['var'];
}

Karşı

php_flag magic_quotes_gpc off

4 Cevap

Her iki durumları karşılamak etmeyin. İki kod yolları = iki kez baş ağrısı, artı yukarı kayma ve yerde hem durumlarla başa unutmayacağım iyi bir şans var.

Ben sihirli tırnak üzerinde veya kapalı olduğunu kontrol etmek için kullanılır, ve onlar olsaydı (iplik diğerleri önerilen gibi), onların büyü geri. Bu sorun size (ne kadar aptal) başka bir programcı bekleyebiliriz ki yapılandırılmış çevreyi değiştirirken, olduğunu.

Bu gün ben sihirli tırnak kapalı olsa gibi kod yazmak ve benim main / önyükleme / her zaman çalışır sihirli tırnak açık veya kapalı olup olmadığını kontrol edin ben dosya bulunmaktadır. Onlar üzerinde iseniz ben bu bad thing açıklar neden bir özel durum atmak ve onlar kapalı olabilir talimatları sağlar.

Bu yaklaşım, tek bir davranış kodu sağlar (sihirli tırnak PHP 6 uzak oluyor) doğru kendi sunucularını yapılandırmak için kodunuzu kullanarak diğer millet teşvik ve birisi really onlar işleyebilir üzerinde sihirli tırnak ihtiyacı varsa istisna ve kendi eline hayatlarını alır.

I get_magic_quotes_gpc() kullanarak ayarını kontrol ve hata ile büyük gürültülü çıkış yapardı. Hata doğru ayarı yöneticisine bildirmek.

Ben bu mümkün eğer (. Htaccess veya apache yapılandırma erişimi gerektirir) kapalı olduğundan emin olur. Bu daha fazla kaynak gerektirir ve hata eğilimli davranış sıyırma daha tümüyle önlemek için daha iyidir.

Onu devre dışı bırakılması bir seçenek değilse, sizin örnek kod giriş superglobals ($ _GET, $ _POST, ...) için faydalı olabilir ama bu supergloabls dışındaki kaynaklardan gelen verilere uygulamak için değil emin olabilir. Bu tür kötüye is pretty common.

Sadece emin SQL inkection sizi korumak için bir yerde uygun bir kaçışa mekanizmasına sahip magic_quotes_gpc () kapatarak zaman (örneğin mysql_real_escape_string () gibi veya PDO tablolarını) emin olun. SQL injection önleme hakkında daha fazla okuyabilirsiniz - here.

Bir yan not php daha 6 artık onlara destek olmayacaktır. Yani kapalı onlar için kod yazma gelecekte yararlı olabilir.