• User Attivo

    Funzione HtmlSpecialChar

    Devo fare in modo che su un form non mi vengano passati comandi dannosi o invasivi. Volvevo usare il comando HTMLSpecialChar, ma dice non riconosce il comando...

    $descrizione = HTMLSpecialChar($_POST['descrizione']);
    

    Qualcuno sa spiegarmi come mai? E poi, visto che ci sono, vi spiego cosa vorrei fare, magari con un string replace, risolvo ugualmente.

    Ho fatto questo scriptino in php per fare dei file di testo divisi per regione, per alcuni utenti, a cui devo tirare fuori le etichette per le spedizioni.

    
    
    <?
    
    $nomefile = $_POST['regione']."_spedizione.txt";
    $descrizione = HTMLSpecialChar($_POST['descrizione'].);
    if(isset($_POST['submit'])) {
    if($_POST['nome'] && $_POST['email'] && $_POST['descrizione'] && $_POST['regione'] && $_POST['citta'] && $_POST['indirizzo']) {
    $fp = @fopen($nomefile, 'a+');
    
    @fputs ($fp,'--'."\n");
    @fputs ($fp,'Nome e Cognome:'.$_POST['nome']."\n");
    @fputs ($fp,'<br />'."\n");
    @fputs ($fp,'Email per contatti :'.$_POST['email']."\n");
    @fputs ($fp,'<br />'."\n");
    @fputs ($fp,'Descrizione :'.$_POST['descrizione']."\n");
    @fputs ($fp,'<br />'."\n");
    @fputs ($fp,'Prodotti :'.$_POST['prodotti']."\n");
    @fputs ($fp,'<br />'."\n");
    @fputs ($fp,'Regione :'.$_POST['regione']."\n");
    @fputs ($fp,'<br />'."\n");
    @fputs ($fp,'Città :'.$_POST['citta']."\n");
    @fputs ($fp,'<br />'."\n");
    @fputs ($fp,'Località :'.$_POST['localita']."\n");
    @fputs ($fp,'<br />'."\n");
    @fputs ($fp,'Indirizzo :'.$_POST['indirizzo']."\n");
    @fputs ($fp,'<br />'."\n");
    @fputs ($fp,'Eventi :'.$_POST['eventi']."\n");
    
    
    @fclose($fp);
    echo 'Dati inseriti con successo!';
    }else{ 
    echo 'Compilare i campi obbligatori!';
    }}else{
    ?>
    
    <form action="form.php" method="post">
    <table>
    <tr><td>* Nome e Cognome:</td><td><input type="text" name="nome"></td></tr>
    <tr><td>* Indirizzo Email :</td><td><input type="text" name="email"></td></tr>
    <tr><td>* Descrizione :</td><td><TEXTAREA NAME="descrizione" ROWS=10 COLS=40></TEXTAREA></td></tr>
    <tr><td>Prodotti dell'azienda :</td><td><input type="text" name="prodotti"></td></tr>
    <tr><td>* Regione :</td><td><select id="Search" name="regione" class="regionesearch">
    <option value="" selected="selected">Inserisci regione</option>
    <option value="abruzzo">Abruzzo</option>
    <option value="basilicata">Basilicata</option>
    <option value="calabria">Calabria</option>
    <option value="campania">Campania</option>
    <option value="emiliaromagna">Emilia Romagna</option>
    <option value="friuli">Friuli Venezia Giulia</option>
    <option value="lazio">Lazio</option>
    <option value="liguria">Liguria</option>
    <option value="lombardia">Lombardia</option>
    <option value="marche">Marche</option>
    <option value="molise">Molise</option>
    <option value="piemonte">Piemonte</option>
    <option value="puglia">Puglia</option>
    <option value="toscana">Toscana</option>
    <option value="trentino">Trentino Alto Adige</option>
    <option value="umbria">Umbria</option>
    <option value="valdaosta">Val d'aosta</option>
    <option value="veneto">Veneto</option>
    <option value="sardegna">Sardegna</option>
    <option value="sicilia">Sicilia</option>
    </select> </td></tr>
    <tr><td>* Città :</td><td><input type="text" name="citta"></td></tr>
    <tr><td>Località :</td><td><input type="text" name="localita"></td></tr>
    <tr><td>* Indirizzo :</td><td><input type="text" name="indirizzo"></td></tr>
    <tr><td>Eventi :</td><td><TEXTAREA NAME="eventi" ROWS=10 COLS=40></TEXTAREA></td></tr>
    </table>
    <p>I dati segnati con * sono obbligatori!</p>
    <input type="submit" name="submit" value="Invia">
    </form>
    
    
    

    Ecco, vorrei che nel form non passassero comandi html o php o java. COme posso fare? Elimando ogni < o > con uno string replace su ogni campo?
    Qualcuno sa aiutarmi?


  • Consiglio Direttivo

    @Alessandrog said:

    $descrizione = HTMLSpecialChar($_POST['descrizione']);
    

    non lo riconosce perchè è scritto male 😉

    [php]$descrizione = htmlspecialchars($_POST['descrizione']);[/php]
    Prova così che dovrebbe andare :ciauz:


  • User Attivo

    Ahh... grazie!

    Nel frattempo credo di aver risolto così:

    $descrizione = ereg_replace("[^A-Za-z0-9 ]", "", $descrizione );
    

    Piccola questione ancora aperta, ma la pulitura va fatta sul form o prima di scrivere sul txt?

    Uff.. non funziona. L'errore, giustamente, non appare più. Ma sul file mi va a scrivere comunque i caratteri indesiderati.
    Come fare?