Ciao a tutti, ho questo grave problema...non mi genera l'immagine captcha del contact form, che ho provato a creare da me...non capisco dove sbaglio.
Directory principale del sito ho aggiunto il file esito.php e captcha.php oltre a una immagine di sfondo captcha.jpg
specifico che il form contiene un captcha e la spunta per l'informativa sulla privacy
Codice del file captcha.php
Codice PHP:
<?php
session_start();
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
function _generateRandom($length=6)
{
$_rand_src = array(
array(48,57) //digits
, array(97,122) //lowercase chars
// , array(65,90) //uppercase chars
);
srand ((double) microtime() * 1000000);
$random_string = "";
for($i=0;$i<$length;$i++){
$i1=rand(0,sizeof($_rand_src)-1);
$random_string .= chr(rand($_rand_src[$i1][0],$_rand_src[$i1][1]));
}
return $random_string;
}
$im = @imagecreatefromjpeg("captcha.jpg");
$rand = _generateRandom(3);
$_SESSION['captcha'] = $rand;
ImageString($im, 5, 2, 2, $rand[0]." ".$rand[1]." ".$rand[2]." ", ImageColorAllocate ($im, 0, 0, 0));
$rand = _generateRandom(3);
ImageString($im, 5, 2, 2, " ".$rand[0]." ".$rand[1]." ".$rand[2], ImageColorAllocate ($im, 255, 0, 0));
Header ('Content-type: image/jpeg');
imagejpeg($im,NULL,100);
ImageDestroy($im);
?>
codice del file esito.php
Codice PHP:
<?php session_start() ?>
<?php
function isValidEmail($email){
return eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $email);
}
if (isset($_POST['submit'])) {
$nome=$_POST['nome'];
$email=$_POST['email'];
$messaggio=$_POST['messaggio'];
$privacy=$_POST['privacy'];
if (!empty($nome)) {
if (!empty($email)) {
if (isValidEmail($email)) {
if (!empty($messaggio)) {
if ($privacy=1) {
if($_SESSION["captcha"]=$_POST["captcha"]) {
$testo_del_messaggio="Nome: $nome\n";
$testo_del_messaggio.="Email: $email\n";
$testo_del_messaggio.="Messaggio: $messaggio\n";
$testo_del_messaggio.="Privacy: $privacy\n";
$esito=mail("email_azienda@azienda.com","Messaggio di $nome ($email)", $testo_del_messaggio);
if ($esito) {
echo "Esito: Messaggio inviato, ripsonderemo appena possibile!";
} else {
echo "Errore: Non è stato possibile inviare il messaggio!";
}
} else {
echo "Errore: Il Codice di verifica non è corretto!";
}
} else {
echo "Errore: Bisogna dare il consenso sulla Privacy!";
}
} else {
echo "Errore: Manca il Messaggio!";
}
} else {
echo "Errore: Formato Email non corretto!";
}
} else {
echo "Errore: Manca un indirizzo Email!";
}
} else {
echo "Errore: Manca il Nome!";
}
} else {
echo "Errore: Modulo di invio non valido!";
}
?>
testo in index.html relativo al form
codice HTML:
<form id="form1" name="form1" method="post" action="esito.php">
<div class="field half first">
<p>
<label for="nome">Nome</label>
<input type="text" name="nome" id="nome" />
</p></div>
<div class="field half">
<p>
<label for="email">Email</label>
<input type="text" name="email" id="email" />
</p></div>
<p>
<label for="messaggio">Messaggio</label>
<textarea name="messaggio" id="messaggio" cols="45" rows="5"></textarea>
</p>
<p>
<input name="privacy" type="checkbox" id="privacy" value="1" />
<label for="privacy">....Testo della Privacy....</label></p>
<p>
<label for="captcha">Digita il Codice di verifica</label>
<input type="text" name="captcha" id="captcha" />
<img src="captcha.php" alt="captcha image"></p>
<p>
<input type="submit" name="submit" id="submit" value="Invia Messaggio" />
<input type="reset" value="Reset" />
</p>
</form>
Grazie a tutti per le risposte