stripslashes () kullanarak discriminately

3 Cevap

Benim php uygulama stripslashes kullanır () magic_quotes ile başa çıkmak için, ancak kullanıcının kendi girişi ile bir \ tedarik izin çünkü ben sadece bu magic_quotes koyuyor bölü kaldırmak istiyorum.

3 Cevap

stripslashes gelişigüzel eğik kaldırmaz.

Sihirli tırnak açıksa ([{, o '\\' ile '\' yerine, eğik çizgi kaçış olacak, ve stripslashes doğru kaçan 'sihirli tırnak geri gerekir, değiştirilmesi 1)]} {ile [(0)]} kullanıcı girilen ne geri almak için.

Ben muhtemelen sadece böyle bir şey istiyorum düşünüyorum:

// Ripped from the PHP manual (http://us3.php.net/manual/en/function.get-magic-quotes-gpc.php)
if (get_magic_quotes_gpc()) {
    $lastname = stripslashes($_POST['lastname']);
}
else {
    $lastname = $_POST['lastname'];
}

Bu kodu sonunda $lastname kullanıcının girdiği olanlar dışında herhangi bir eğik olmamalıdır.

(Bkz: the docs) Bir başka not, sihirli tırnak bir güvenlik sorunu vardır, ve PHP yeni sürümlerinde önerilmemektedir.

Magic_quotes_gpc kullanarak zaten kötü bir fikir olduğunu, resmen 5,3 olarak önerilmemektedir ve gone PHP 5.5 gibi. Gerçekten mysql_real_escape_string veya ifadeler veya saklı yordamlar hazırlanmış tarafından faydalı do şey yapmış olamazdı değil, çünkü daha da önemlisi (ve hemen), zayıf güvenliği teşvik eder.

Eğer ondan kurtulmak eğer, lütfen ...

Böylece gibi, kendi kodlama / kod çözme fonksiyonları haddeleme deneyin:

function doEncode($string){
     return addslashes(str_replace("\","\\",$string));
}

function doDecode($string){
    return str_replace("\\","\",stripslashes($string));
}