Máte pravdu.
Magické citáty nemají nic společného s věcmi sql a neměly by s nimi být spojeny.
Protože magické uvozovky jsou problém na celém webu a escapování sql je pouze problém související s SQL.
Potřebují tedy různé zacházení a nikdy by se neměly používat společně.
Musíte se bezpodmínečně zbavit kouzelných uvozovek, protože kazí nejen SQL věci, ale každou manipulaci s daty na vašem webu.
Bylo by tedy moudré vložit nějaké stripslashes do jakéhokoli bootstrap souboru, který se má spustit při každém volání skriptu. Kód, který můžete najít v mnoha implementacích takového kódu, stačí vyhledat funkci 'stripslashes_deep'.
Bylo by moudré, aby se tento kód vždy spouštěl (samozřejmě za podmínky kontroly get_magic_quotes_gpc()) navzdory skutečnému stavu magických uvozovek, jen kvůli kompatibilitě.
Existuje však další možnost, jak je vypnout:zkuste vytvořit soubor php.ini v kořenovém adresáři vaší aplikace.
Ve vašem kódu je však závažná chyba. Ve skutečnosti nic nechrání.
Unikáte z $memberid
a $postid
ale necitujte je! . Neexistuje tedy vůbec žádná ochrana. Už jen proto, že escapování funguje pouze při použití s citací.
Prosím, pamatujte:
Escapování není synonymem pro zabezpečení!
Samotný útěk ničemu nepomůže. Je třeba dodržovat celou řadu pravidel.
Nedávno jsem napsal slušné vysvětlení, takže bych se neopakoval:Nahrazení funkcí mysql_* PDO a připravenými příkazy