ho creato una pagina contatti.htm la quale contiene il form per i contatti
Codice PHP:
<form name="form1" action="aaa.php" method="post">
<font color="#BCF2ED">
Nome:
<input type="text" name="nome" size="34"></font>
<font color="#BCF2ED">Motivo:
</font>
<select name="categorie">
<option value="commenti">Commenti al sito</option>
<option value="errori">Errori nel sito</option>
<option value="problemi">Problemi tecnici</option>
<option value="altro">Altro</option>
</select><font color="#BCF2ED">
</font>
<font color="#BCF2ED">E - mail:
<input type="text" name="mail" size="44"></font>
<font color="#BCF2ED">Commenti:
<textarea cols="36" rows="5" name="commento"></textarea></font>
<font color="#BCF2ED">Codice di sicurezza:
[img]captcha.php[/img]
inserisci qui il codice che vedi in figura:
<input type='text' name='codiceverifica' size="25"></font>
<input type="submit" value="Invia">
<input type="reset" value="Cancella"></form>
questo è il file dell'action aaa.php
Codice PHP:
<?php
//function per il redirect
function redirect($url, $seconds = FALSE)
{
if (!headers_sent() && $seconds == FALSE)
{
header("Location: " . $url);
}
else
{
if ($seconds == FALSE)
{
$seconds = "0";
}
echo "<meta http-equiv=\"refresh\" content=\"$seconds;url=$url\">";
}
}
echo "</head><body>";
echo "<table class='nobord'><tr><td class='logo' colspan='2'><table class='nobord'><tr><td>[img]logo1.gif[/img]</td></tr></table></td></tr><tr><td class='top' width='100%'>";
require('php-captcha.inc.php');
$c=0;
//controllo codice captcha
if (PhpCaptcha::Validate($_POST['codiceverifica'])) {
$c=0;
}
else{
$codice="- Il codice di sicurezza è nullo o non è corretto";
$c++;
}
$dati= array ("$_POST[nome]","$_POST[mail]","$_POST[commento]");
$risp= array("nome", "mail","commento");
for($j=0; $j < count($dati); $j++){
//eliminao i possibili spazi vuoti o invi nei vari campi
$dati[$j]= trim($dati[$j]);
//controllo se i campi sono vuoti
if (empty($dati[$j])){
$campi[$j]="- Campo $risp[$j] vuoto
";
$c++;
}
}
//controllo se i campo mail non è vuoto e controllo nel caso sia pieno la validità della mail
if (empty($dati[1])){
$m=0;
}
else{
if(eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $dati[1])){
$m++;
}
else{
$posta= "- Mail scritta non correttamente
";
$c++;
}
}
// messaggio da inviare nel caso di successo di controlli
if ($c==0){
$messaggio="Questa email ti è stata inviata dal sito. L'utente $_POST[nome] (a cui puoi rispondere a: $_POST[mail], ti ha contattato per motivi di $_POST[categorie].\nTi ha scritto:\n$_POST[commento]";
mail("giuseppepiccinno@live.it", "Segnalazione contatti", $messaggio);
echo "[b]<span style='font-size:12pt;color:white'>[b]Messaggio inviato!!![/b]</span>
<span style='color:#BCF2ED'>Tra pochi istanti verrai reindirizzato alla home del sito.[/b]
Se non vuoi aspettare oltre</span> [url='home.htm']clicca qui[/url]";
redirect("http://www.atuttascienza.altervista.org/home.htm",7);
}
else{
//messaggio da inviare in caso di insuccesso
echo "<span style='font-size:12pt;color:white'>[b]Attenzione!!! Invio non convalidato[/b]</span>
<span style='color:white'>Ci sono i seguenti errori:
</span>";
echo "<span style='color:#BCF2ED'>";
echo "$codice
";
for ($x=0; $x < count($dati); $x++){
echo "$campi[$x]";
}
echo "$posta";
echo "</span>";
echo "
[url='javascript:history.back(-1);']Ritorna a contatti[/url]";
}
?>
sono alle prime armi con php...
prendendo codici preesistenti come function e php captcha e ampliando il codice con scritte mie...son riuscito a rendere operativa la pagina php...fa tutti i controlli perfettamente..e segnala tutti gli errori perfettamente...
quello che però da fastidio a me è che per esempio per controllare la validità della mail devo rifare il controllo se è vuota prima...
un chiarimento sulla funzione isset per favore:
la riga if(isset())
mi dice questo?
se il campo è pieno allora?
un'altra cosa il fatto di dover ripetere il ciclo per indicare quali sono i campi vuoti...
c'è un modo per semplificarlo?
un altra cosa:
la corretta scrittura se non sbaglio di questa cosa è questa:
$_POST['nome'] con gli apici...ma se metto cosi mi da errore mentre se li tolgo va bene...cio è normale?