- Home
- Categorie
- Coding e Sistemistica
- Coding
- CICLO IF con FORM ACTION (FormMail.aruba.it/cgi-bin/FormMail.pl)
-
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]
-
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?
-
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.
-
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.