Stai facendo veramente tanta confusione. Ciò che ti permette di fare l'escape è mysql_real_escape_string, o chi per lui. Tutto ciò che c'è prima è superfluo. Le magic quotes non sono una protezione per le sql injection. Non lo sono mai state. Sono solo un danno. E' imbarazzante che fino alla 5.4 erano ancora attivabili. Quindi ecco la risposta: smetti di preoccuparti se le magic quotes sono attive o meno. Non trattarle proprio nel tuo codice. Proteggerti dalle sql injection è un tuo compito, che non puoi affidare a nessun sistema pseudo automatico. http://stackoverflow.com/questions/6...jection-in-php
Per quando riguarda le mysql_* funzioni, si, sono deprecate. Pure da parecchio. Questo significa che in una delle prossime versioni di php quell'estensione non verrà più distribuita con php. Penso che ci vorrà ancora parecchio prima che questo si verifichi, ma sarebbe una buona cosa fare "il passo in avanti" già oggi e iniziare ad utilizzare mysqli_* o ancora meglio pdo.
Per quando riguarda la curiositàDevi togliere i backslash aggiunto dalle magic quotes prima di passare il dato a mysql_real_escape_string. In caso contrario viene fatto un secondo escape, con il risultato che la stringa utilizzata nella sql conterrà anche il carattere di escape come un carattere valido da salvare/utilizzare.se sì, perchè dovrei togliere i \ prima di inviare i valori al db? non è pericoloso?