UsingMagicQuotes

Da Php-faq.org.

[modifica] Come comportarsi con i magic quotes?

Php ha un comportamento particolare quando riceve dati da `$_POST`, `$_GET` e `$_COOKIE`; di fatto esegue un semplice `addslashes` sui contenuti di questi array.

Questo accade perché "escapare" determinati caratteri può aiutare a rendere migliore la sicurezza degli script, tuttavia questa linea d'azione genera più problemi di quanti ne risolva. Il fatto che php effettui l'escaping di una stringa proveniente dal browser ( $_POST, $_GET, etc ) è determinato dallo stato di un settaggio di configurazione chiamato magic_quotes, presente nel file php.ini.

Ed è proprio per questo che questo comportamento sarà rimosso in Php 6, quindi sarebbe meglio disabilitarlo ed imparare a codare facendo gli escape quando necessario in runtime. Se però non potete fare a meno di utilizzarlo per ricevere i valori basterà eseguire un `stripslashes` sui dati che volete trattare:

$_POST['data'] = stripslashes($_POST['data']);

Ed il gioco è fatto.

Se non si conosce il server su cui girerà il nostro script o è uno script destinato al pubblico è opportuno controllare lo stato magic_quotes prima di effettuare lo stripslashes.

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

Strumenti personali