Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    Eliminare il carattere \ prima degli Apostrofi (')

    Ciao ragazzi,
    so che l'argomento è già stato più volte trattato ma ho molti dubbi in merito.
    Ho fatto una ricerca nel forum e ad essere sincero sono molto confuso sulla tecnica da utilizzare per risolvere il problema.

    In pratica ho un form HTML mediante il quale un utente inserisce i propri dati e cliccando sul tasto INVIA questi dati vengono elaborati da uno script php che dopo alcuni controlli li va a memorizzare in un databse MYSQL.

    Se tutti i campi sono stati compilati e se sono stati compilati nel modo corretto allora i dati vengono memorizzati, altrimenti viene visualizzato un messaggio di errore e nei campi del form vengono ricopiati i dati che l'utente stesso ha inserito precedentemente.

    Il problema si verifica in quest'ultimo caso, cioè ogni qual volta che vi è un APOSTROFO (') esso è sempre preceduto dal carattere \

    Esempio:
    testo inserito nel form
    codice:
    è un prodotto dell'anno scorso
    testo dopo l'elaborazione da parte dello script e ricopiato nel form
    codice:
    è un prodotto dell\'anno scorso
    Come posso eveitare ciò? Come elimino quel \
    codice:
    è un prodotto dell\\'anno scorso
    Ho provato con le funzioni htmlspecialchars e htmlentities ma il problema persiste.

    Avete qualche suggerimento?

  2. #2
    usa mysql_escape_string()

  3. #3
    Originariamente inviato da dan_scorribanda
    usa mysql_escape_string()
    Prima di tutto grazie per la risposta.

    Ho fatto come mi consigli, ma in questo modo i \ vengono aggiunti e non eliminati

    Giusto? Oppure ho sbagliato io?

    Utilizzando la funzione da te consigliata invece di 1 \ me ne ritrovo 3 .

  4. #4
    usa stripslashes()

    leggi anche la pillola di Luca200 in merito.

    http://forum.html.it/forum/showthrea...ostid=10166292

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    Originariamente inviato da piero.mac
    usa stripslashes()

    leggi anche la pillola di Luca200 in merito.

    http://forum.html.it/forum/showthrea...ostid=10166292
    Grazie Piero,
    ma il mio problema non riguarda l'inserimento dei dati nel db ma solo la visualizzazione degli stessi prima dell'inserimento.

    I dati vengono, automaticamente, inseriti correttamente nel db.
    Il problema sta quando, prima di memorizzarli nel db, li visualizzo di nuovo nel form. Solo in questo caso compaiono gli \ ed in questo caso io vorrwi eliminarli.

    Non so se mi sono spiegato bene.....

  6. #6
    Originariamente inviato da spiadadda
    Grazie Piero,
    ma il mio problema non riguarda l'inserimento dei dati nel db ma solo la visualizzazione degli stessi prima dell'inserimento.

    I dati vengono, automaticamente, inseriti correttamente nel db.
    Il problema sta quando, prima di memorizzarli nel db, li visualizzo di nuovo nel form. Solo in questo caso compaiono gli \ ed in questo caso io vorrwi eliminarli.

    Non so se mi sono spiegato bene.....
    e' la stessa cosa.

    prima di visualizzare passa la stringa con stripslashes()

    Ti ho suggerito la pillola perche' spiega in modo chiaro il perche' ed il percome ci sono i caratteri di escape in una stringa. A prescindere di dove userai quella stringa.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  7. #7
    Grazie piero ho risolto mediante la funzione da te suggerita.

    Avevo letto la pillola ma avevo pensato che quei tipi di funzioni andavano bene solo nel caso dell'inserimento dei dati nel DB e non anche per la stampa di questi.

    Ti ringrazio infinite per l'aiuto.

    Se posso approfittare volevo chiederti un altro parere per togliermi un altro dubbio

    Quando inserisco i dati nel DB anche se essi contengono APOSTROFI vengono inseriti senza escape (\). In questo caso mi consiglio lo stesso id trattare i dati da inserire nel db?

    Molto probabilmente il php è configurato in modo tale da trattare gli apostrofi.

    Che ne pensi?

  8. #8
    il php prevede QUALE carattere di escape usare. se il backslashes oppure l'apice

    i caratteri che prevedono un escape sono tutti i caratteri di controllo utilizzati in un contesto di stringa. addslashes() e stripslashes() vengono utilizzati nell'ambito php, cosa che fa in automatico il magic_quotes_gpc(). (G=GET, P=POST, C=COOKIE)

    Per le stringhe da immettere nel db, meglio usare l'apposita funzione mysql_real_escape_string() che si connette al server mysql e valuta anche il character set utilizzato dalla connessione.

    Il carattere di escape indica a mysql che quell'apice o altro carattere di controllo e' parte della stringa e non un carattere di controllo. Fatto questo la stringa viene inserita e l'escape rimosso. Guarda che questo e' chiaramente spiegato nella pillola.

    l'apostrofo (ALT+96) ` serve a delimitare nomi di tabelle/campi (nomi costanti) quando si utilizzano a questo scopo numeri, spazi, nomi riservati per indicare che non si tratta di un carattere/parola riservata o altro. Ma usare questi caratteri citati per i nomi di tabelle/campi/alias/variabili e' da pirlomane.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.