• Super User

    mysql_escape_string();

    Salve!

    Ho un form che mi serve per salvare dei dati.
    Ho i miei bei campi di input di tipologia text e la mia textarea.
    Tramite una funzione che ho creato posso editare questi dati che ho precedentemente salvato nella medesima maniera.

    **Problema:
    **Salvo sul database queste porzioni di testo che estrapolo da una textarea.
    Siccome questi dati hanno o possono contenere caratteri come l'apostrofo cosa che mysql in varchar non accetta dandomi errore, in php ho aggiunto davanti alla variabile questa funzione:
    mysql_escape_string($testo);

    Succede che su linux va tutto bene. Dopo aver fatto il submit sul form e salvato i dati, se vado in futuro a ricontrollarli questi hanno mantenuto le mie variazioni come dio comanda.

    In windows no!
    Rimane tutto però davanti agli apostrofi compare ad ogni nuovo salvataggio uno SLASH

    ad esempio creo un nuovo dato scrivendo nella textarea questo:
    "bla bla bla c'era una volta nel west un'anziana signora".

    clicco su** SALVA

    decido poi di editare questo dato, quindi la mia funzione mi pone gli strumenti x farlo. **In linux? ok, in windows? NO! Vedo i dati precedenti così:

    "bla bla bla c**/'era una volta nel west un/**'anziana signora".

    Se salvo nuovamente e riedito il dato trovo una nuova variazione:
    "bla bla bla c**//'era una volta nel west un//**'anziana signora".

    E così via!


  • Super User

    Nessuno sa darmi risposta? 😄


  • Super User

    Risalve sono sempre su questo problema , essendo passato un bel pò di tempo volevo tornare a chiedervi se sapevate darmi una risposta 😛 Il problema è sempre il solito: nonostante il metodo mysql_escape_string , su windows compaiono comunque le slash davanti ad ogni apostrofo al momento del salvataggio su database


  • User

    Controlla in php.ini magic_quotes_runtime Se ti succede questo può darsi sia a off su Linux e on su Windows.

    Se è così lo metti a off anche su Windows o fai uno stripslashes sui dati estratti dal db prima di inserirli nei campi textarea dove fai l'edit.


  • Super User

    No l'avevo su off pure su windows però ti ringrazio perchè mi è balzato l'occhio a questa stringa:
    ; Magic quotes for incoming GET/POST/Cookie data.
    magic_quotes_gpc = on

    Ho cambiato su off e ora va benissimo =D


  • User

    Ok, da come avevo capito il problema sembrava uno invece era l'altro 🙂 Comunque puoi tenerlo off, basta ti ricordi di passare a mysql_escape_string() tutto quello che ricevi da $_POST o $_GET e usi in una query.