• User

    Problema gestione caratteri speciali

    Buongiorno,

    devo gestire dati testuali da e verso form HTML (per l'introduzione e la modifica degli stessi sul database) per gestionali da me realizzati.

    Nonostante io utilizzi sull'HTML del back-end, del front-end e sulle collation dei campi testuali di MySQL la codifica "utf-8", ho problemi, non tanto con le lettere accentate, ma con le " (doppie virgolette).

    I dati vengono inseriti a database con mysql_real_escape_string(stripslashes($_POST['nomecampoform'])) attraverso campi input text e textarea di form HTML.

    Il database salva correttamente le doppie virgolette e le visualizza correttamente lato front-end. Quando però vengono richiamate sul back-end in modifica dentro un campo input text di un form non viene visualizzato nulla.

    Qual è il miglior modo di gestire i caratteri speciali in PHP e MySQL per evitare le problematiche sopra esposte (indipendentemente dai settaggi del webserver Apache e dell'interprete PHP)?

    Grazie.

    Matteo


  • User Attivo

    @falcon2600 said:

    mysql_real_escape_string(stripslashes($_POST['nomecampoform']))
    Metti gli slash e li togli subito? :mmm:


  • User

    @tigrone said:

    Metti gli slash e li togli subito? :mmm:

    L'intera istruzione è stata tratta da un testo sul PHP/MySQL...

    Da quello che ho capito io, **stripslashes() **toglie eventuali backslash prima dei caratteri speciali: " diventa " e \ diventa \ (solo se magic_quotes_gpc è on)...

    Mentre mysql_real_escape_string() dovrebbe aggiungere un backslash ai caratteri speciali prima dell'inserimento nel DB (anche per ragioni di sicurezza): " diventa " e \ diventa \\....

    Quindi prima tolgo (eventuali) backslash e poi li aggiungo (per evitare di raddoppiarli nel caso fossero già presenti)... Correggimi se sbaglio...

    Grazie.


  • User Attivo

    Prova a togliere quello stripslashes da lì e metterlo dove vai a richiamare i dati.


  • User

    @tigrone said:

    Prova a togliere quello stripslashes da lì e metterlo dove vai a richiamare i dati.

    Non funziona.

    A database ci sono, ma nei campi del form dove recupero i valori non viene visualizzato niente.