Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2009
    Messaggi
    65

    Form per l'invio di feedback

    Ciao a tutti,

    sto provando a creare un form per l'invio di un feedback o comunque una sorta di pagina per inviare dei commenti una una casella di posta.

    Ho quasi concluso lo script, il quale riesce anche ad inviare l'e-mail (mi arriva nella casella di posta), però mi arriva vuoto...
    Ci sto sbattendo la testa da una mezz'ora, ma non riesco a capire il perché, mi potreste per favore dare qualche indicazione? (io ho cominciato a programmare in php da poco).

    Questi i due file che compongono il form:

    File controllo.php

    Codice PHP:
    <?php
    if (!isset($_POST['submit']))
        {
        include(
    "form.php");
        }

    else 
        {
            
    // Controllo sul Nome e Cognome        
                    
    if (empty($_POST['nome']))
                    {
                        
    $blank['nome'] = "vuoto";
                    }                
                    elseif (!
    preg_match("/^[A-z. ]{3,30}$/",$_POST['nome']))
                    {
                        
    $formats['nome'] = "errato";
                    }
                    
                
    // Controllo sulla e-mail
                    
    $campo filter_var($_POST['mail'], FILTER_SANITIZE_EMAIL);
                    
    $fluttuante strpos($_POST['mail'], '.');
                
                    if (empty(
    $_POST['mail']))
                    {
                        
    $blank['mail'] = "vuoto";
                    }
                    elseif (!
    preg_match("/^[A-Za-z.@_0-9-]{3,45}$/",$_POST['mail']))
                    {
                        
    $formats['mail'] = "errato";
                    }
                    elseif (
    $fluttuante == 0)
                    {
                        
    $formats['mail'] = "errato";
                    }                
                    elseif(!
    filter_var($campoFILTER_VALIDATE_EMAIL))
                        {
                            
    $formats['mail'] = "errato";
                        }

    // Controllo commento
                    
    $_POST['conto_commento'] = strlen($_POST['commento']);
                    if (empty(
    $_POST['commento']))
                    {
                        
    $blank['commento'] = "vuoto";
                    }
                    elseif ((
    $_POST['conto_commento']) > 5000)
                    {
                        
    $formats['conto_commento'] = "errato";
                    }
                    
    $commento htmlspecialchars($_POST['commento']);



            if (@
    sizeof($blank) > or @sizeof($formats) > 0)
            {
                include(
    "form.php");
            }

    // Qui parte l'else per l'invio dei dati

            
    else
            {
                
    $from $_POST['nome'];
                
    $e_mail $_POST['mail'];
                
    $message $commento;
                
    mail("mia_mail@gmail.com""Nome: $from""Da: $e_mail""Testo: $message");
                echo 
    "Grazie {$_POST['nome']}, il tuo commento &egrave; stato spedito correttamente";
            }
                    
        }
    ?>

    File di partenza form. php

    Codice PHP:
    <?php

    echo "<form action=\"controllo.php\" method=\"post\">";
        echo 
    "<table align='center'>";
            
                if(isset(
    $_POST['nome']))
                {
                    
    $valore $_POST['nome'];
                }
                else
                {
                    
    $valore "";
                }
                echo 
    "<tr><th>Nome e/o Cognome:
    </th></tr>
                      <tr><td align='center'><input type='text' name='nome' size='21' maxlenght='21' value='
    $valore'></td>";
                        if (@
    sizeof($blank['nome']) > 0)
                        {
                            echo 
    "<tr><td align='center'>Il seguente campo &egrave; obbligatorio. </td></tr>";
                    
                        }
                        if (@
    sizeof($formats['nome']) > 0)
                        {
                            echo 
    "<tr><td align='center'>Il seguente campo non ha un formato corretto. </td></tr>";
                    
                        }
                      
                     echo 
    "</tr>";            
                
                echo 
    "<tr><td>
    </td></tr>"
    ;

                if(isset(
    $_POST['mail']))
                {
                    
    $valore $_POST['mail'];
                }
                else                
                {
                    
    $valore "";
                }
                echo 
    "<tr><th>E-mail:
    </th></tr>
                      <tr><td align='center'><input type='text' name='mail' size='21' maxlenght='21' value='
    $valore'></td>";
                        if (@
    sizeof($blank['mail']) > 0)
                        {
                            echo 
    "<tr><td align='center'>Il seguente campo &egrave; obbligatorio. </td></tr>";
                    
                        }
                        if (@
    sizeof($formats['mail']) > 0)
                        {
                            echo 
    "<tr><td align='center'>Il seguente campo non ha un formato corretto. </td></tr>";
                    
                        }
                      
                     echo 
    "</tr>";
                      
            
            
                if(isset(
    $_POST['commento']))
                {
                    
    $valore_commento $_POST['commento'];
                }
                else
                {
                    
    $valore_commento "";
                }

            echo 
    "<tr><td>
    </td></tr>"
    ;

            echo 
    "<tr><th>Commento:</th></tr><tr><td><textarea rows='15' name='commento' cols='60'>".$valore_commento."</textarea></td>";
            
                        if (@
    sizeof($blank['commento']) > 0)
                        {
                            echo 
    "<tr><td align='center'>Il seguente campo &egrave; obbligatorio. </td></tr>";
                    
                        }
                        if (@
    sizeof($formats['commento']) > 0)
                        {
                            echo 
    "<tr><td align='center'>Il seguente campo non ha un formato corretto. </td></tr>";
                    
                        }
                        if (@
    sizeof($formats['conto_commento']) > 0)
                        {
                            echo 
    "<tr><td align='center'>Messaggio troppo lungo, puoi inserire massimo 5000 caratteri. </td></tr>";
                            unset(
    $commento);
                    
                        }

                echo 
    "<tr><td>
    </td></tr>"
    ;
                echo 
    "<tr><td align='right'><input type='submit' name='submit' value='Invia il modulo'/></td></tr>";
            echo 
    "</table>";
    echo 
    "</form>";
    ?>

    Lo script in pratica fa un controllo sui valori inseriti e se tutto a posto va avanti e passa ad utilizzare la funzione mail() ...che secondo me ho sbagliato a scrivere.

    Nello script ancora non ho inserito un captcha, poiché non ho la più pallida idea di come fare, ma questa è un'altra storia...

    Grazie in anticipo

  2. #2
    mail("mia_mail@gmail.com", "Nome: $from", "Da: $e_mail", "Testo: $message");

    è il terzo parametro della funzione mail che contiene il testo della mail, tu invece lo hai messo come quarto... credo sia questo il problema

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2009
    Messaggi
    65
    Grazie mille per la risposta .

    Studiandomi meglio la funzione mail() ho capito dove ho sbagliato.



    Dato che io mi sono avvicinato da poco e di sicurezza ne so praticamente zero: Questo form che ho creato è abbastanza sicuro?

    Io faccio controllare tutto allo script, però non so quali tecniche possano essere utilizzate per violare la sicurezza.

    Grazie in anticipo

  4. #4
    io nn sono un esperto ma lo script anche se un pò "barocco" mi sembra molto fatto bene:

    - il nome deve contenere solo lettere
    - l'email deve avere la sintassi esatta
    - il messaggio è filtrato con htmlspecialchars

    In pratica, per quel che io ne sappia, hai fatto tutto correttamente! (bravo!)

    magari alcuni di tali controlli li farei anche con un javascript (ma è superfluo...)

    Inoltre se vuoi avere funzionalità aggiuntive (per esempio: invio di allegati, oppure mail in formato html) in tal caso ti conviene usare una classe (phpmailer).

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2009
    Messaggi
    65
    Originariamente inviato da oly1982
    io nn sono un esperto ma lo script anche se un pò "barocco" mi sembra molto fatto bene:
    Grazie per la risposta.

    Cosa intendi per "barocco"?

    Ho cercato di farlo il più semplice possibile, anche perché attualmente non sarei in grado di fare cose molto complesse.
    Sto studiando la programmazione ad oggetti; forse magari avrei potuto usare qualche funzione in più...magari fra un po' di tempo migliorerò il tutto...


    In pratica, per quel che io ne sappia, hai fatto tutto correttamente! (bravo!)


    magari alcuni di tali controlli li farei anche con un javascript (ma è superfluo...)
    Hmm, javascript (e Ajax) li studierò dopo il php...anche se il tempo è quello che è e quindi sto andando mooolto a rilento...

    Inoltre se vuoi avere funzionalità aggiuntive (per esempio: invio di allegati, oppure mail in formato html) in tal caso ti conviene usare una classe (phpmailer).
    Beh, principalmente questo script mi serve solo per mandare dei commenti, quindi niente allegati...
    Poi ovviamente migliorerò il layout del form in base alla grafica del sito...


    Se c'è qualche altra persona, magari anche più preparata che voglia darmi consigli, è la benvenuta



    Ps. ah, tra l'altro io ho fatto studi economici ed ultimamente sto lavorando su sistemi SAP (lato funzionale), quindi io e la programmazione siamo due mondi a parte...lo faccio solo per hobby

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2009
    Messaggi
    65
    Mi sono però reso conto di una cosa:

    ho aggiunto un altro campo (Oggetto/Motivazione del messaggio), quasi del tutto simile al campo nome...il problema è che non riesco a fargli accettare gli apostrofi.
    Sono riuscito a risolvere per le lettere accettante con questo pattern:

    Codice PHP:
    elseif (!preg_match("/^[A-Za-z.,@_0-9- \xE0\xE8\xE9\xF9\xF2\xEC\x27]{3,45}+$/",$_POST['motivo'])) 
    Il problema è che ho provato ad inserire varie combinazioni (tra cui anche '\s per farmi accettare anche gli apostrofi) e invece mi cancella tutto il messaggio dopo gli apostrofi...

    Come posso fare? E' sicuro il pattern che sto usando sopra?

    Grazie in anticipo


    Ps. davanti ogni stringa di queste: \xE0\xE8\xE9\xF9\xF2\xEC\x27 c'è il backslash, solo che il forum me lo elimina...

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2009
    Messaggi
    65
    Niente da fare, ci sto provando un tutti i modi...

  8. #8
    Utente di HTML.it
    Registrato dal
    May 2009
    Messaggi
    65
    Risolto, si trattava di un problema di codifica.

    Grazie per il supporto

  9. #9
    Raga urge aiuto !
    Anch'io ho un problema a fare accettare gli apostrofi.
    Se provo a far partire un messaggio verso un indirizzo @ che contiene apostrofi
    non lo considera.

    L'email parte, ma il campo AddAddress cioè quello del destinatario è blank.

    ps - Inoltre, avrei un altro, problema sempre correlato, per il campo di input dell'indirizzo email ho inserito ovviamente un controllo, ma anche qui se inserisco un indirizzo con apostrofi mi dice che il campo non è compilato correttamente, cioè si blocca sul 2° controllo !eregi boh ???? xchè ??


    Codice PHP:
    // Funzioncina per gestire magic_quotes_gpc php ed apostrofi, presa da pillola html.it(PHP)
    function strip_magic ($value){
    $value = (get_magic_quotes_gpc()) ? stripslashes($value) : $value;
    return 
    $value;


    // gestione della variabile per l'insert nel db
    $mail_=strip_magic($_POST['mail']);        
    $mail mysql_real_escape_string($mail_$con);
            
     
     
    // come controllo il campo dell'email prima della query di insert
    if(empty($mail)){
      
    header("Location: ../messaggio.php?msg=$NoEmail");
      exit();
    }
    elseif(!
    eregi("^[a-z0-9._-]+@+[a-z0-9._-]+.+[a-z]{2,4}$"$mail)){
      
    header("Location: ../messaggio.php?msg=$emailError");
      exit();


    Dov'è che sbaglio ?!!


    Thanks



    .

  10. #10
    nessuno ?

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.