Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    29

    approfondimento su POST e su htmlspecialchars

    CIao a tutti!!

    Sto sviluppando un sito in cui gli utenti inseriscono dei dati tramite form. La pagine di inserimento del form porta, al click del pulsante submit, ad una pagina di visualizzazione di conferma dei dati inseriti. E da questa pagina si puo decidere di inserirli nel database.

    Ora, ho fatto delle prove di inserimento di caratteri speciali ( come < > " ) .

    Dalla pagina 1 l'utente inserisce il testo (variabile "testo" ) che viene trasmesso tramite POST alla pagina di conferma. Su questa pagina faccio naturalmente: $testo=thmlspecialchars(trim($_POST['testo'])) ;

    E se faccio un echo $testo; vedo i caratteri corretti (e se visualizzo la sorgente pagina vedo i caratteri html cambiati, tipo &lt; al posto di < , &gt; al psoto di >.

    Per trasmettere i dati da questa pagina di conferma alla pagina di salvataggio nel database, creo un altro form con metodo POST, e inserisco quindi un campo hidden di nome "testo" contenente la variabile $testo (che appare, sempre nel codice sorgente, con i tag cambiati dalla funzione htmlspecialchars).

    MA nella pagina di inserimento nel database, se faccio un echo $_POST['testo'] vedo invece i valori > e < e non quelli modificati!! come mai??


    mi viene da pensare .. ma vorrei essere sicuro .. il comando POST cambia automaticamente i &gt; e &lt; e via dicendo, nei rispettivi simboli html?????

    grazie!!

  2. #2
    Ciao

    non capisco

    se faccio un echo $testo; vedo i caratteri corretti (e se visualizzo la sorgente pagina
    vedo i caratteri html cambiati, tipo &lt; al posto di < , &gt; al psoto di >.
    $_POST non fa altro che inviare i dati passati da un form in maniera non visibile, tutto qui!!!

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    29
    Si ma allora, visto che di default il mio php per i POST mi mette gia' le slash prima dei caratteri speciali (esempio " ' \ ecc) , mi era sorto il dubbio che il POST codoficasse anche i caratteri speciali HTML.

    esempio pratico:

    visualizzando il codice sorgente della pagina in cui c'e' il form, vedo:
    <input type="hidden" name="testo" value="&lt;a href=&quot;pippo.html&quot;&gt; prova '&lt;/a&gt;" >

    nella pagina "action" del form, in php faccio un
    echo $_POST['testo'];
    nella mia pagina vedo il LINK ipertestuale, e nel codice sorgente di questa vedo
    prova

    QUINDI , .. il metodo POST mi trasforma le interpretazioni html per i caratteri special, direttamente nei caratteri speciali??? sembra di si ..

    ma e' normale?


    spero di essere stato piu' chiaro

    grazie!

  4. #4
    non è il post o il php, ma il browser, che trasforma automaticamente le entities in caratteri quando esegue il parsing della pagina

    di conseguenza devi dargli un'altra passata con htmlspecialchars prima di salvarlo nel database


    due consigli:

    a) evita di passare al browser dati già manovrati perché siano rinviati: il post è invisibile alla maggior parte degli utenti comuni, ma un utente esperto potrebbe modificarlo, costringendoti a rieseguire i controlli di sicurezza e scrivere doppio codice
    piuttosto usa una sessione

    b) non usare htmlspecialchars, usa htmlentities (con codifica utf-8), in questo modo avrai del codice compatibile xml/xhtml e avrai la sostituzione di " con &quote;
    Armageddon - Chief Developer

    Stiamo cercando collaboratori!

  5. #5
    se per esempio nel form passi in un campo

    l'esempio

    e tu fai un echo $_POST['l'esempio']

    vedrai che ti da errorre, perchè gli apici racchiudono il nome della variabile
    quindi php mette lo slash.

    per togliere lo slash usa la funzione stripslashes.

    non capisco perchè ti riferisci al codice sorgente se con echo hai il risultato che vuoi perchè fai riferimento al codice sirgente?
    (il fatto che nel codice sorgente hai &lt;a al posto di < probabilemnte è la lettura del html che fa questa conversione)

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.