Quando lo script PHP riceve i dati da una richiesta POST AJAX, le variabili $_POST
sono sottoposte a escape. La cosa davvero strana è che questo accade solo sul mio server di produzione (con PHP 5.2.12 su Linux) e non sul mio server locale (con PHP 5.3.1 su Windows). ci
var pageRequest = false;
if(window.XMLHttpRequest) pageRequest = new XMLHttpRequest();
else if(window.ActiveXObject) pageRequest = new ActiveXObject("Microsoft.XMLHTTP");
pageRequest.onreadystatechange = function() { }
var q_str = 'data=' + " ' ";
pageRequest.open('POST','unnamed_page.php',true);
pageRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
pageRequest.setRequestHeader("Content-length", q_str.length);
pageRequest.setRequestHeader("Connection", "close");
pageRequest.send(q_str);
è un qualsiasi motivo questo sta accadendo:
Ecco il codice AJAX? E come devo risolvere questo in modo che funzioni su entrambi i server?
Edit: Ho le seguenti impostazioni per magic_quotes:
Local Master
magic_quotes_gpc On On
magic_quotes_runtime Off Off
magic_quotes_sybase Off Off
E questo non si romperà il mio locale server? Voglio solo assicurarmi di ottenere questo ... –
@George se esegui il controllo come descritto, funzionerà con il tuo server locale, perché 'get_magic_quotes_gpc()' restituirà false lì, e nessuna barra verrà eliminata. Provalo, fai un test di output della funzione, ma la cosa migliore sarebbe di disabilitare le virgolette magiche sulla macchina Linux, puoi fare un 'phpinfo()', ti dirà cosa è abilitato e cosa no –
@George questa è stata una misura di sicurezza per prevenire le iniezioni SQL evitando automaticamente i dati rilevanti con le barre. Non è una cattiva idea in sostanza, ma non è mai stata catturata su, e alla fine è diventato solo un fastidio illustrato dal tuo caso. –