Visualizzazione risultati 1 fino 9 di 9

Discussione: input da form in PHP

  1. #1
    Guest

    Predefinito input da form in PHP

    Salve,
    nelle mie pagine internet ho predisposto alcuni form, che vengono generati da uno script PHP.
    Ora ho un problema di parsing delle stringhe che gli utenti inseriscono. Qualche utente inserisce dei tag HTML invece del normale testo e questo causa malfunzionamenti vari.
    Altri caratteri (apici, doppi apici ecc.) causano problemi di inserimento del database mysql.
    Mi stavo chiedendo se è disponibile qualche funzione già scritta per effettuare un parsing delle stringhe eliminando i caratteri particolari.
    Grazie.

  2. #2
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    Tutti gli input che vanno verso il database dovrebbero passare attraverso mysql_real_escape_string(), prima di essere usati in una query (sia select che insert). Questo ti protegge da virgolette strane, sql injection, apici malvagi.

    Poi il resto dipende da quello che vuoi fare del testo malformato: puoi usare strip_tags() per eliminarlo, oppure htmlspecialchars() per trasformarlo in caratteri visibili. In generale dai un'occhiata alla sezione String functions della guida del php, e troverai roba utile.

  3. #3
    Guest

    Predefinito

    Basta che metti questo: htmlspecialchars($_POST["nome_del_campo"]);
    Ciau!! **

  4. #4
    Guest

    Predefinito

    grazie

  5. #5
    Guest

    Predefinito

    Salve,
    effettivamente la funzione htmlspecialchars risolve (quasi) il problema. L'unica cosa che non mi è chiara, è che se un utente inserisce delle righe di testo in una finestra di un form e digita dei carriage-return, quando poi faccio un echo del messaggio i carriage-return si perdono e tutto il testo viene visualizzato di seguito.
    Saper cosa si puo' fare per ovviare a questo problema ?
    Grazie.

  6. #6
    L'avatar di mycarlo
    mycarlo non è connesso Utente attivo
    Data registrazione
    06-10-2009
    Residenza
    $this->s50
    Messaggi
    467

    Predefinito

    Prova con nl2br()

  7. #7
    Guest

    Predefinito

    Grazie.
    Ma questa funzione come si concilia con htmlspecialchars ? Se prima applico la htmlspecialchars mi elimina anche i carriage-return. Se invece applico prima la funzione che mi hai indicato tu e introduco dei <br> poi li elimino con la htmlspecialchars... non capisco...

  8. #8
    Data registrazione
    04-09-2009
    Messaggi
    183

    Predefinito

    Gli a capo intesi come new line non vengono eliminati nè convertiti con la htmlspecialchars, viene invece convertito il <br> in &lt;br&gt;. Prima di usare la htmlspecialchars potresti convertire i <br> del testo in \n, poi htmlspecialchars e poi nl2br
    Age Of Empires GIF Creator & Archive
    New! Blog informatico di scripting PHP avanzato
    Vuoi giocare online a Age of Empires The Conquerors? -> Usa Voobly !! (MSN Zone non lo supporta più dal 19 giugno 2006)
    Il mio clan di The Conquerors -> Rifugio dei Conquerors
    Il mio stato su Xfire Live Video -> Unreal Tournament 2004
    Facebook MMORPG

  9. #9
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    Leggiamo le guide magari, visto che la gente si sbatte a postarti i link. htmlspecialchars() non elimina i ritorni a capo.
    The translations performed are:

    * '&' (ampersand) becomes '&amp;'
    * '"' (double quote) becomes '&quot;' when ENT_NOQUOTES is not set.
    * ''' (single quote) becomes ''' only when ENT_QUOTES is set.
    * '<' (less than) becomes '&lt;'
    * '>' (greater than) becomes '&gt;'
    Ultima modifica di dreadnaut : 01-11-2009 alle ore 14.36.34

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •