• User Attivo

    CICLO IF con FORM ACTION (FormMail.aruba.it/cgi-bin/FormMail.pl)

    Salve,
    nella classica sezione Scrivici.php, ho un form con nome, cognome, email, *messaggio *e un ciclo if che controlla che questi campi non siano vuoti. Il problema è che nell'action del form devo mettere (essendo un dominio su aruba) ***[PHP]action="httpDUEPUNTI//FormMailPUNTOarubaPUNTOit/cgi-bin/FormMailPUNTOpl"[/PHP]. Tuttavia inserendo l'action, al premere del pulsante il ciclo if viene saltato a piè pari a favore dell'action!

    Il ciclo if è questo:
    [PHP]<?php
    if (isset($_POST["invia_messaggio"]))
    {
    $errori=array();

    if (!isset($_POST['nome']) || empty($_POST['nome']))
    {$errori[]='Nome';}

    if (!isset($_POST['cognome']) || empty($_POST['cognome']))
    {$errori[]='Cognome';}

    if (!isset($_POST['email']) || empty($_POST['email']))
    {$errori[]='Email';}

    if (!isset($_POST['messaggio']) || empty($_POST['messaggio']))
    {$errori[]='Messaggio non inserito';}

    if (!empty($errori))
    {$messaggio = "Errore nella compilazione dei campi del form";}

    else
    {$messaggio = "Messaggio inviato";}
    }
    ?>[/PHP]

    e questo
    [PHP] <?php
    if (!empty($messaggio)){
    echo "<p>" . $messaggio . "</p>";

    if (!empty($errori))
    {
    foreach($errori as $campoerrore)
    {
    echo "* " . $campoerrore . "<br/>";
    }
    }}?>[/PHP]

    Il form è il classico
    [HTML]<FORM action="" method="post">
    <table width="100%" border="0" cellspacing="10" cellpadding="0"><tr><td width="30%" align="right">Nome
    </td>
    <td width="70%"><input name="nome" type="text" id="nome" size="40" maxlength="40" /></td>
    </tr>
    <tr>
    <td align="right">Cognome
    </td>
    <td><input name="cognome" type="text" id="cognome" size="40" maxlength="40" /></td>
    </tr>
    <tr>
    <td align="right">Telefono</td>
    <td><input name="telefono" type="text" id="telefono" size="30" maxlength="10" /></td>
    </tr>
    <tr>
    <td align="right">E-mail
    </td>
    <td><input name="email" type="text" id="email" size="30" maxlength="30" /></td>
    </tr>
    <tr>
    <td align="right">Messaggio*</td>
    <td><textarea name="messaggio" id="messaggio" cols="45" rows="5"></textarea></td>
    </tr>
    <tr>
    <td align="right"></td>
    <td align="right">(* campi obbligatori)</td>
    </tr>
    <tr>
    <td align="right"><input type="submit" name="invia_messaggio" id="invia_messaggio" value="Invia il messaggio" /></td>
    <td> </td>
    </tr>
    </table></form>[/HTML]


  • User Attivo

    Ho bypassato il modulo di aruba preferendo fare tutto da solo (almeno so dove mettere le mani)

    [PHP] <?php
    if (isset($_POST["invia_messaggio"]))
    {
    $errori=array();

    if (!isset($_POST['nome']) || empty($_POST['nome']))
    {$errori[]='Nome';}

    if (!isset($_POST['cognome']) || empty($_POST['cognome']))
    {$errori[]='Cognome';}

    if (!isset($_POST['email']) || empty($_POST['email']))
    {$errori[]='Email';}

    if (!isset($_POST['oggetto']) || empty($_POST['oggetto']))
    {$errori[]='Oggetto';}

    if (!isset($_POST['mexaggio']) || empty($_POST['mexaggio']))
    {$errori[]='Messaggio';}

    if (!empty($errori))
    {$messaggio = "Errore nella compilazione dei campi del form";}

    else
    {
    $to = "[email protected], [email protected]";
    $headers = "Da: " . $_POST['email'];
    $subject = "Qualcuno ci ha scritto da YYY.it!";
    $date = date( "d/m/Y H:i");
    $body = "Modulo proveniente dalla sezione 'Scrivici' di YYY.it" . "\n". "\n";

    // testo nella mail
    $body .= "Data: " . date( "d/m/Y H:i") . "\n";$body .= "Il signor: " . trim(stripslashes($_POST["nome"])) . " " . trim(stripslashes($_POST["cognome"])) . "\n";
    $body .= "La cui email è: " . trim(stripslashes($_POST["email"])) . "\n";
    $body .= "L'eventuale telefono è: " . trim(stripslashes($_POST["telefono"])) . "\n";
    $body .= "Oggetto: " . trim(stripslashes($_POST["oggetto"])) . "\n"; //oggetto del messaggio
    $body .= "Scrive: << " . trim(stripslashes($_POST["mexaggio"])) . ">>" . "\n"; //messaggio

    // invio mail
    mail($to, $subject, $body, $headers); // SE L'INOLTRO E' ANDATO A BUON FINE...
    echo "La mail è stata inviata correttamente. Grazie per averci contattato!";
    }
    } ?>[/PHP]

    Una domanda: per la sicurezza dell'invio qualcuno proponeva di sostituire **trim con strip_tags? E' consigliabile?


  • User Attivo

    Sono 2 funzioni diverse che puoi anche usare insieme... non è che una esclude l'altra: trim() elimina gli spazi prima e dopo la stringa... strip_tags() elimina i tag quindi sarebbe opportuno utilizzarlo se il form lo può compilare chicchessia...

    P.S.: if NON è un ciclo bensì un'istruzione.


  • User Attivo

    Per evitare problemi con l'istruzione if, invece che controllare se i campi erano vuoti in php, potevi usare l'html, esempio :

    <input type="text" name="nome" required="required">

    Così è l'html che controlla se il campo non è vuoto.