sto tentando di realizzare un form mail con captcha e altre info prelevate dall'utente come che tipo di browser usa ma anche compilando correttamente il codice di verifica la mail non parte perchè? ci sono 3 file php + i file.ttf nella cartella font allego il codice magari ci capite qualcosa
example.php :
invio.php:Codice PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>TITOLO</title>
<style>
#invio_result{
width:500px;
}
#err{
font-weight:bold;
color:#FF0000;
}
#ok{
font-weight:bold;
color:#669900;
}
/**********CSS FORM MAIL**********/
#form_mail fieldset{
width:500px;
background-color:#006699;
color:#FFFFFF;
padding:10px;
}
#form_mail label,
#form_mail input{
margin:2px 0 2px 0;
}
#form_mail textarea,
#form_mail input{
float:right;
}
#form_mail label{
width:39%;
float:left;
line-height:30px;
font-weight:bold;
}
#form_mail input{
height:30px;
width:60%;
}
#form_mail textarea{
width:100%;
max-width:100%;
}
#form_mail textarea,
#form_mail input,
#form_mail fieldset{
border:1px solid #CCCCCC;
}
#form_mail input:focus,
#form_mail textarea:focus{
background-color:#CCCCCC;
border:1px solid #CC3366;
}
#form_mail input.bottone{
max-width:20%;
margin:2% 1% 0 1%;
font-weight:bold;
background-color:#CC3366;
color:#FFFFFF;
}
#form_mail input.bottone:hover{
background-color:#FFFFFF;
color:#CC3366;
border:1px solid #CC3366;
}
/********** CSS FORM MAIL END **********/
</style>
</head>
<body>
<div id="invio_result">
<?php if($_GET['err']){echo '<p id="err">Attenzione: '.$_GET['err'].'!</p>';} ?>
<?php if($_GET['ok']){echo '<p id="ok">Grazie per avermi scritto!</p>';} ?>
</div>
<form action="invio.php" method="post" id="form_mail">
<fieldset>
Questo è il tuo ip: <?php echo $_SERVER['REMOTE_ADDR']; ?></p>
<label for="campo_nome">Nome*</label>
<input type="text" name="campo_nome" id="campo_nome" />
<label for="campo_email">E-mail*</label>
<input type="text" name="campo_email" id="campo_email" />
<label for="campo_web">Web</label>
<input type="text" name="campo_web" id="campo_web" value="http://"/>
<label for="campo_oggetto">Oggetto</label>
<input type="text" name="campo_oggetto" id="campo_oggetto" value=""/>
<label for="campo_messaggio">Messaggio</label>
<textarea cols="30" rows="8" name="campo_messaggio" id="campo_messaggio"></textarea>
<? session_start(); ?>
<form action="example2.php" method="post">
[img]captcha.php[/img]
Inserisci il codice che vedi: <input type="text" name="cpt" /> <input type="submit" value="Check" />
</form>
<?php
if(isset($_POST['cpt']) && !empty($_POST['cpt']))
if($_SESSION['CAPTCHA'] != strtolower($_POST['cpt']))
echo "[b]Codice errato![/b]";
else
echo "Ok";
?>
<input type="reset" value="Reset" class="bottone" />
<input type="submit" name="submit" value="Invia" class="bottone" />
</fieldset>
</form>
</body>
</html>
Codice PHP:
<?php
?>
<?
function ControlloEmail($email){
$result = eregi("^[_a-z0-9+-]+(\.[_a-z0-9+-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)+$",$email);
if($result == false){
return false;
}else{
return true;
}
}
if($_POST['campo_email'] == null || $_POST['campo_nome'] == null){
header("example2.php?err=riempire%20tutti%20i%20campi");
}
elseif(ControlloEmail($_POST['campo_email']) == false){
header("example2.php?err=mail%20non%20valida");
}
else{
$destinatario="email@email.it";
$mittente_mail=$_POST['campo_email'];
$oggetto="Form ComeUsare.it - ".$_POST['campo_oggetto'];
$messaggio=$_POST['campo_messaggio'];
$intestazioni = "From: ".$_POST['campo_email'];
$info = "\nNome: ".$_POST['campo_nome'];
$info .= "\nWeb: ".$_POST['campo_web'];
$info .= "\nIP: ".$_SERVER['REMOTE_ADDR'];
$info .= "\nInfo: ".$_SERVER['HTTP_USER_AGENT'];
$info .= "\nora: ".date('d/m/Y - G:i');
$messaggio=$messaggio." \n --------------------------------------------------- \n".$info;
//invio la mail
$risultato = mail($destinatario, $oggetto, $messaggio, $intestazioni);
//reindirizzamento
if($risultato == true){
header("example2.php?ok=1");
}else{
header("example2.php?err=invio%20mail%20fallito");
}
}
?>
captcha.php:
Codice PHP:
<?php
session_start();
define("NONE", 0);
define("EASY", 30);
define("MEDIUM", 50);
define("HARD", 80);
define("VERY_HARD", 100);
define("POINT", 1);
define("LINE", 2);
/* dimensioni */
$x = 200; //larghezza
$y = 80; //altezza
$image = imagecreatetruecolor($x, $y); //creo l'immagine
$color = array();
$color[] = imagecolorallocate($image, 255, 0, 0);
$color[] = imagecolorallocate($image, 0, 255, 0);
$color[] = imagecolorallocate($image, 0, 0, 255);
$color[] = imagecolorallocate($image, 255, 255, 0);
$color[] = imagecolorallocate($image, 255, 0, 255);
$color[] = imagecolorallocate($image, 255, 255, 255);
$color[] = imagecolorallocate($image, 0, 255, 255);
$font = array();
$font[] = "font/arial.ttf";
$font[] = "font/abbeyroad_regular.ttf";
$font[] = "font/roman_sd_regular.ttf";
$font[] = "font/elephants_in_cherry_trees_normal.ttf";
$black = imagecolorallocate($image, 0, 0, 0);
imagefill($image, 0, 0, $black);
add_noise($image, EASY, LINE, $x, $y); //aggiungo il disturbo
$_SESSION['CAPTCHA'] = strtolower(getString()); //genero la nuova stringa
for($i = 0;$i < strlen($_SESSION['CAPTCHA']); $i++) {
/* per ogni lettera applico impostazioni diverse (dimensione, angolo, colore, font) */
imagettftext(
$image, //immagine
20 + rand(0, 6), //dimensione carattere
rand(-35, 35), //angolo di rotazione
($i+1)*26, //offset sulla x
45+ rand(0, 4), //offset sulla y
$color[rand(0, count($color)-1)], //colore
$font[rand(0, count($font)-1)], //carattere
$_SESSION['CAPTCHA'][$i] //lettera da stampare
);
}
header("Content-type: image/png");
imagepng($image);
imagedestroy($image);
function getString() {
$str = base64_encode(time());
$str = str_replace("=", "", $str); //elimino gli =
$str = str_shuffle($str);
return substr($str, 0, 6);
}
function add_noise($image, $difficoult, $figure, $x, $y) {
if($figure == 1)
$difficoult *= 15; //i punti devono essere più delle linee per generare un disturbo significativo
for($i = 0; $i < $difficoult; $i++) {
$color = imagecolorallocate($image, rand(0,255), rand(0,255), rand(0,255));
$p = rand(0, 10);
$x1 = rand($p, rand($x - $p, $x-1));
$x2 = rand($p, rand($x - $p, $x-1));
$y1 = rand($p, rand($y - $p, $y-1));
$y2 = rand($p, rand($y - $p, $y-1));
switch($figure) {
case 1:
imageline($image, $x1, $y1, $x1, $y1, $color);
break;
default:
imageline($image, $x1, $y1, $x2, $y2, $color);
break;
}
}
}
?>