Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    472

    [MySql] Caratteri che danno noia tipo < /

    Ho visto nella guida l'aiuto che permette di trasformare il contenuto nel campo da inserire nel nostro db qualora contenga caratteri "pericolosi" tipo >< e /

    Le operazioni da fare sarebbero queste:
    $nome = addslashes(stripslashes($nome));
    $nome = str_replace("<", "&lt;", $nome);
    $nome = str_replace(">", "&gt;", $nome);


    Sono solo questi i caratteri "pericolosi"?
    Per esempio gli apici (") non danno noia?

    Grazie.

  2. #2
    Considera che se il valore che contiene l'apice " memorizzato nel DB deve
    essere visualizzato in un input text, non funzionerà

    infatti con un questo codice XHTML

    <input type="text" value="il mio "valore" memorizzato nel DB" />

    nella pagina vedrai all'interno della text solo 'il mio'
    perchè il doppio apice chiude l'attributo value
    Michele Castellucci
    Sviluppatore Web del Consorzio CottonBit
    Consorzio Cottonbit
    Risorse per la programmazione
    Dire Fare Programmare!

  3. #3
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120

    Re: [MySql] Caratteri che danno noia tipo < /

    Originariamente inviato da mld
    Ho visto nella guida l'aiuto che permette di trasformare il contenuto nel campo da inserire nel nostro db qualora contenga caratteri "pericolosi" tipo >< e /

    Le operazioni da fare sarebbero queste:
    $nome = addslashes(stripslashes($nome));
    $nome = str_replace("<", "&lt;", $nome);
    $nome = str_replace(">", "&gt;", $nome);


    Sono solo questi i caratteri "pericolosi"?
    Per esempio gli apici (") non danno noia?

    Grazie.
    quale guida?

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    472
    Grazie Ghiaccio per il tuo intervento.

    Per Luca, la guida è naturalmente quella di questo sito e in particolare quella che si trova a questo link http://php.html.it/guide/lezione/228...-nel-database/
    dove si legge (incollo):

    Questo avviene automaticamente in php4, ma il nostro utente potrebbe utilizzare una versione precedente. Quindi inseriamo queste righe che prima eliminano gli slash, poi li reinseriscono:

    else:
    $titolo = addslashes(stripslashes($titolo));
    $autore = addslashes(stripslashes($autore));
    $mail = addslashes(stripslashes($mail));
    $testo = addslashes(stripslashes($testo));

    Quando sarà il momento di visualizzare l'articolo, potremmo avere problemi con alcuni caratteri, in particolare con quelli che vanno in contrasto con i tag html. Per questo conviene ancora sostituire il carattere < con l'equivalente html &lt; e inserire nel testo i tag di fine riga:

    $titolo = str_replace("<", "&lt;", $titolo);
    $titolo = str_replace(">", "&gt;", $titolo);
    $autore = str_replace("<", "&lt;", $autore);
    $autore = str_replace(">", "&gt;", $autore);
    $testo = str_replace("<", "&lt;", $testo);
    $testo = str_replace(">", "&gt;", $testo);
    $testo = nl2br($testo);

  5. #5
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Be' la guida è un po' datata, alcuni aspetti sarebbero da rivedere.
    Due cose:
    1) Ciò che può infastidire il database sono solo alcuni caratteri come apici e virgolette. Tuttavia l'approccio postato è, a mio avviso, oggi inaccettabile. Ti consiglio di dare un'occhiata a questa pillola. http://forum.html.it/forum/showthrea...ostid=10166292

    2) I caratteri segnalati nella seconda parte (< > ecc...), come correttamente segnalato dalla guida, non sono un problema per il database, bensì per l'eventuale successiva visualizzazione su browser. In questo senso io non sono d'accordo con l'alterazione del dato al momento della memorizzazione, ma preferirei prendere le precauzioni del caso in fase di visualizzazione (attraverso le funzioni apposite come htmlentities() strip_tags()).

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    472
    Ho preso nota della tua pillola e ti ringrazio.

    Per quanto riguarda > e < dici di utilizzare htmlentities e strip_tags ma potresti dirmi quale dei 2 usi? e li usi semplicemente così? $a=htmlentities($a)

    Ad esempio se ho $a="<A>" e poi ho bisogno di richiamarlo così
    www.sito.it/link.php?$a=<A>.. (naturalmente così non funziona...)

    Grazie

  7. #7
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Sull'esempio che hai fatto non ho capito niente.
    Per il resto dovrai sapere tu quello che vuoi fare: con strip_tags() elimini del tutto i tag html, con htmlentities() li fai visualizzare al browser così come sono senza che si trasformino in codice html (con relativi rischi di sicurezza)

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    472
    Ti ringrazio del chiarimento.

    In quanto all'esempio mi spiego meglio. Nel campo "a" della mia tabella ho, fra gli altri il seguente valore:
    <A>
    (Poniamo pure che sia lo username di un utente).
    Se devo per esempio appenderlo all'url per poterlo leggere in GET come devo fare?
    www.miosito.it è il mio sito; pagina.php è la pagina che mi processa l'informazione; a cose normali farei:
    www.miosito.it/pagina.php?a=pippo per esempio se cercassi lo username pippo ma qua se faccio www.miosito.it/pagina.php?a=<A> non funziona...

  9. #9
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Se vuoi metterlo in un url devi applicarci sopra la funzione urlencode()

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.