Captcha quasi ultimato...problem!!!

Ride

Nuovo Utente
6 Mag 2009
4
0
0
Ciao ragazzi ho quasi finito un controllo Captcha nel mio form e ho due problemi:

1) Inserire un bottone che mi refreshi l'immagine (creata in .php) nel caso non sia leggibile

2) Non mi funziona il controllo Captcha...anche se inserisco il codice giusto non mi va...

Allego i file che compongono il tutto contattic.php (dove c'è il form) immaginec.php (crea l'immagine e il codice) immagine_show.php (mostra l'immagine nel form) sendate1.php (invia i dati per posta se sono corretti

contattic.php

Codice:
<html>

<head>
<meta http-equiv="Content-Language" content="it">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>CONTATTI</title>
</head>

<body>

<form method="POST" action="http://www.santadown.altervista.org/sendate1.php">
	<p><font face="Calibri" style="font-size: 15pt">CONTATTI: </font></p>
	<table border="0" width="46%" id="table1" style="font-family: Calibri; font-size: 12pt; font-style: oblique" height="340">
		<tr>
			<td width="149">Nome</td>
			<td><input type="text" name="name" size="38"></td>
		</tr>
		<tr>
			<td width="149">Cognome</td>
			<td><input type="text" name="lname" size="38"></td>
		</tr>
		<tr>
			<td width="149">Email</td>
			<td><input type="text" name="email" size="38"></td>
		</tr>
		<tr>
			<td width="149">Telefono</td>
			<td><input type="text" name="tel" size="38"></td>
		</tr>
		<tr>
			<td width="149">Motivo del contatto:</td>
	<td>		<select name="motivo">
	<option value="Informazioni Commerciali">Informazioni commerciali</option>
	<option value="Richiesta preventivo">Richiesta preventivo</option>
	<option value="Prenotazione Appuntamento">Prenotazione appuntamento</option>
</select></td>
		</tr>

		<tr>
			<td width="149">Messaggio:</td>
			<td><textarea rows="11" name="mess" cols="29"></textarea></td>
		</tr>

		<tr>
			<td width="149">Inserire codice di controllo*</td>
<img src="immagine_show.php">

		</tr>
	</table>
				<p><input type="text" name="captcha" size="20"></p>
	<p>
<INPUT type="submit" value="Invia"><a href="immagine_prune.php"><input type="reset" value="REFRESH" name="B2"></a></p>
	<p>*<font face="Arial"><span style="font-size: 9pt">il codice di controllo è 
	uno script che impedisce ad alcuni software malevoli di intasare il sito. Se 
	l'immagine dovesse risultare troppo distorta per una corretta comprensione 
	del codice cliccare sul tasto REFRESH.</span></font></p>
&nbsp;</form>

</body>

</html>

immaginec.php

Codice:
<?php
class immagine {
header("Content-type: image/png");
for($i=0;$i<6;$i++) // sei cifre
{
$rand = rand(65, 90);
$code .= chr($rand);
}
$code = substr($code,0,9);
$x = 200;
$y = 75;
$space = $x / (strlen($code)+1);
$img = imagecreatetruecolor($x,$y);
$bg = imagecolorallocate($img,255,255,255);
$border = imagecolorallocate($img,0,0,0);
$colors[] = imagecolorallocate($img,128,64,192);
$colors[] = imagecolorallocate($img,192,64,128);
$colors[] = imagecolorallocate($img,108,192,64);
imagefilledrectangle($img,1,1,$x-2,$y-2,$bg);
imagerectangle($img,0,0,$x-1,$y-2,$border);
for ($i=0; $i< strlen ($code); $i++)
{
$color = $colors[$i % count($colors)];
imagettftext($img,28+rand(0,8),-20+rand(0,40),($i+0.3)*$space,50+rand(0,10),$color,'font.ttf',$code{$i});
}
for($i=0;$i<400;$i++)
{
$x1 = rand(3,$x-3);
$y1 = rand(3,$y-3);
$x2 = $x1-2-rand(0,8);
$y2 = $y1-2-rand(0,8);
imageline($img,$x1,$y1,$x2,$y2,$colors[rand(0,count($colors)-1)]);
}
imagepng($img);
$_SESSION['captcha'] = $code;
}
?>

immagine_show.php

Codice:
<?php
include("immaginec.php");
$img = new immagine();
//$img->show("trees.jpg");
$img->show();

?>

sendate1.php

Codice:
<?php


// Inizio sessione e termina gli errori 
session_start(); 
error_reporting(0); 

// Salva i dati 
$nome       = trim($_POST['name']); 
$cognome   = trim($_POST['lname']); 
$email       = trim($_POST['email']); 
$telefono  = trim($_POST['tel']); 
$motivo       = trim($_POST['motivo']); 
$messaggio = trim($_POST['mess']); 
$captcha   = trim($_POST['captcha']); 

// Controlla se tutti i dati sono stati inseriti 
if ( $nome != '' && 
     $cognome != '' && 
     $email != '' && 
     $telefono != '' && 
     $motivo != '' && 
     $messaggio != '' && 
     $captcha != '' ) 
{ 
    // Controlla se il codice di sicurezza è giusto 
    if ( $captcha == $_SESSION['captcha'] ) 
    { 
        // to 
        $to = "[email protected]"; 
         
        // Subject 
        $subject = 'Modulo proveniente dal sito <a href="http://www.studio.it" target="_blank"><a href="http://www.studio.it" target="_blank">www.studio.it</a></a>'; 
         
        // Body 
        $body  = "Contenuto del modulo:\n\n"; 
        $body .= "Dati personali : Nome: "     . stripslashes($_POST["name"])     . "\n"; 
        $body .= "Cognome: "                 . stripslashes($_POST["lname"]) . "\n"; 
        $body .= "Email: "                     . stripslashes($_POST["email"]) . "\n"; 
        $body .= "Telefono: "                 . stripslashes($_POST["tel"])     . "\n"; 
        $body .= "Motivo del contatto: "     . stripslashes($_POST["motivo"]). "\n"; 
        $body .= "Messaggio: "                 . stripslashes($_POST["mess"])     . "\n"; 
         
        // Spedisce la mail 
        if( mail($to, $subject, $body) ) 
            echo "La mail è stata inoltrata con successo!"; 
        else 
            echo "Si sono verificati dei problemi nell’invio della mail."; 
    } 
    else 
         echo "Codice di conferma errato"; 
} 
else 
    echo "Invio dati fallito: prego riempire tutti i campi e riprocedere"; 

?>

Provate pure (non funzia)... l'indirizzo è www.santadown.altervista/contattic.php
Grazie mille ragazzi!
 

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
Togli quell'
PHP:
error_reporting(0);
e vedi se lo script produce qualche variabile non definita o altro errore
 

Ride

Nuovo Utente
6 Mag 2009
4
0
0
ho provato a togliere quella parte da sendate1.php ma non funziona...cioè non è che mi da errore...ma anche se io metto il codice captcha generato giusto mi dice k è sbagliato...
 

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
stampati a video il valore di $_SESSION['captcha'] e vedi se è uguale a $_POST['captcha'].
Poi metti session_start anche all'inizo del codice di immagine_show.php
 

Ride

Nuovo Utente
6 Mag 2009
4
0
0
Ho capito qual'è il problema...e ci sono riuscito andando per tentativi XD
Ho provato a caricare l'esempio del captcha da solo...cioè una pagina con l'immagine e il controllo..un if verificava se era giusta o no...
Quello che ho capito è che se mettevo

PHP:
<?php
    if ( $captcha != $_SESSION['captcha'] )
	    { 
		            echo "Codice corretto!"; 
    } 
    else 
         echo "Codice di conferma errato"; 
?>

qualsiasi valore inserito nel campo andava bene..perchè? perchè probabilmente lui non riusciva a recuperare 'captcha' e la considerava vuota...
stessa cosa nell'altro form più complesso..togliendo il controllo sul campo captcha quando era vuoto mi spediva l'email (perchè ogni valore immesso escluso il campo vuoto andava bene)

ho capito quindi che non riesce a recuperare la variabile...perchè???? è forse nella pagina sbagliata il comando

PHP:
$_SESSION['captcha'] = $code;  // è contenuto in immaginec.php

HELPPPP!!!
 

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
dovrebbe essere il contrario:
PHP:
<?php
    if ( $captcha == $_SESSION['captcha'] )
        { 
                    echo "Codice corretto!"; 
    } 
    else {
         echo "Codice di conferma errato"; 
            }
?>
 

Ride

Nuovo Utente
6 Mag 2009
4
0
0
Ho risolto così...ho cambiato nome alla variabile si sessione perchè se era uguale al nome di quella post non funzionava (non so perchè) allego i file

contattic.php

Codice:
<html>

<head>
<meta http-equiv="Content-Language" content="it">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>CONTATTI</title>
</head>

<body>

<form method="POST" action="http://www.santadown.altervista.org/sendate1.php">
	<p><font face="Calibri" style="font-size: 15pt">CONTATTI: </font></p>
	<table border="0" width="46%" id="table1" style="font-family: Calibri; font-size: 12pt; font-style: oblique" height="340">
		<tr>
			<td width="149">Nome</td>
			<td><input type="text" name="name" size="38"></td>
		</tr>
		<tr>
			<td width="149">Cognome</td>
			<td><input type="text" name="lname" size="38"></td>
		</tr>
		<tr>
			<td width="149">Email</td>
			<td><input type="text" name="email" size="38"></td>
		</tr>
		<tr>
			<td width="149">Telefono</td>
			<td><input type="text" name="tel" size="38"></td>
		</tr>
		<tr>
			<td width="149">Motivo del contatto:</td>
	<td>		<select name="motivo">
	<option value="Informazioni Commerciali">Informazioni commerciali</option>
	<option value="Richiesta preventivo">Richiesta preventivo</option>
	<option value="Prenotazione Appuntamento">Prenotazione appuntamento</option>
</select></td>
		</tr>

		<tr>
			<td width="149">Messaggio:</td>
			<td><textarea rows="11" name="mess" cols="29"></textarea></td>
		</tr>

		<tr>
			<td width="149">Inserire codice di controllo*</td>
<img src="immagine.php">

		</tr>
	</table>
				<p><input type="text" name="captcha" size="20"></p>
	<p>
<INPUT type="submit" value="Invia">p>
	<p>*<font face="Arial"><span style="font-size: 9pt">il codice di controllo è 
	uno script che impedisce ad alcuni software malevoli di intasare il sito. Se 
	l'immagine dovesse risultare troppo distorta per una corretta comprensione 
	del codice cliccare sul tasto REFRESH.</span></font></p>
&nbsp;</form>

</body>

</html>

sendate1.php

Codice:
<?php

// Inizio sessione e termina gli errori 
session_start(); 
error_reporting(0); 

// Salva i dati 
$nome       = trim($_POST['name']); 
$cognome   = trim($_POST['lname']); 
$email       = trim($_POST['email']); 
$telefono  = trim($_POST['tel']); 
$motivo       = trim($_POST['motivo']); 
$messaggio = trim($_POST['mess']); 
$captcha   = $_POST['captcha']; 

// Controlla se tutti i dati sono stati inseriti 
if ( $nome != '' && 
     $cognome != '' && 
     $email != '' && 
     $telefono != '' && 
     $motivo != '' && 
     $messaggio != '' &&
     $captcha != '' ) 
{ 
    // Controlla se il codice di sicurezza è giusto 
    if ( $captcha == $_SESSION['code'] ) 
    { 
        // to 
        $to = "[email protected]"; 
         
        // Subject 
        $subject = 'Modulo proveniente dal sito <a href="http://www.studio.it" target="_blank"><a href="http://www.studio.it" target="_blank">www.studio.it</a></a>'; 
         
        // Body 
        $body  = "Contenuto del modulo:\n\n"; 
        $body .= "Dati personali : Nome: "     . stripslashes($_POST["name"])     . "\n"; 
        $body .= "Cognome: "                 . stripslashes($_POST["lname"]) . "\n"; 
        $body .= "Email: "                     . stripslashes($_POST["email"]) . "\n"; 
        $body .= "Telefono: "                 . stripslashes($_POST["tel"])     . "\n"; 
        $body .= "Motivo del contatto: "     . stripslashes($_POST["motivo"]). "\n"; 
        $body .= "Messaggio: "                 . stripslashes($_POST["mess"])     . "\n"; 
         
        // Spedisce la mail 
        if( mail($to, $subject, $body) ) 
            echo "La mail è stata inoltrata con successo!"; 
        else 
            echo "Si sono verificati dei problemi nell’invio della mail."; 
    } 
    else 
         echo "Codice di conferma errato"; 
} 
else 
    echo "Invio dati fallito: prego riempire tutti i campi e riprocedere"; 

?>

immagine.php

Codice:
<?php
session_start();
header("Content-type: image/png");
for($i=0;$i<6;$i++) // sei cifre
{
$rand = rand(65, 90);
$code .= chr($rand);
}
$code = substr($code,0,9);
$_SESSION['code'] = $code; //
$x = 200;
$y = 75;
$space = $x / (strlen($code)+1);
$img = imagecreatetruecolor($x,$y);
$bg = imagecolorallocate($img,255,255,255);
$border = imagecolorallocate($img,0,0,0);
$colors[] = imagecolorallocate($img,128,64,192);
$colors[] = imagecolorallocate($img,192,64,128);
$colors[] = imagecolorallocate($img,108,192,64);
imagefilledrectangle($img,1,1,$x-2,$y-2,$bg);
imagerectangle($img,0,0,$x-1,$y-2,$border);
for ($i=0; $i< strlen ($code); $i++)
{
$color = $colors[$i % count($colors)];
imagettftext($img,28+rand(0,8),-20+rand(0,40),($i+0.3)*$space,50+rand(0,10),$color,'font.ttf',$code{$i});
}
for($i=0;$i<400;$i++)
{
$x1 = rand(3,$x-3);
$y1 = rand(3,$y-3);
$x2 = $x1-2-rand(0,8);
$y2 = $y1-2-rand(0,8);
imageline($img,$x1,$y1,$x2,$y2,$colors[rand(0,count($colors)-1)]);
}
imagepng($img);
imagedestroy($img);
?>

C'è l'ultimo problema (poi vi giuro k ho finito XD)...la variabile di sessione genera un codice per ogni utente..e se uno non riesce a leggerlo può refreshare ottenendo le stesse lettere disposte in modo diverso però...
Ho provato a cercare qualcosa in java per poterlo fare e ho trovato questa funzione

function reloadImage()
{
img = document.getElementById($img');
}

solo che $img è l'immagine appena creata...non c'è un modo per dirgli di rifare il ciclo di immagine.php
tipo al posto di $img mettere session_start() ??? (ho già provato e non funziona)
 
Discussioni simili
Autore Titolo Forum Risposte Data
E Pagina Cloudflare e captcha Domini 0
C [OFFRO] Click Day - Risoluzione Captcha Offerte e Richieste di Lavoro e/o Collaborazione 4
P PHP - Leggere una pagina passata con Form e Captcha PHP 0
A Odio captcha e simili... PHP 0
P Problema captcha su pagina php PHP 2
M Problema captcha ? PHP 15
A Errore codice Captcha PHP 1
Shyson Non trova immagine Captcha PHP 4
felino Commenti: email di notifica, reply solo dall'admin e captcha WordPress 1
giancadeejay captcha in un form -- php+js PHP 0
L forum con captcha Classic ASP 1
I captcha PHP 7
Shyson Un form non aggiorna il codice captcha Javascript 0
Shyson Pulsante refresh codice captcha Javascript 0
filippino phpBB: spam nonostante captcha e domanda di sicurezza phpBB 0
felino Really Simple Captcha: errore 404 sull'immagine WordPress 4
A Generatore captcha PHP 4
H Problema validazione CAPTCHA PHP 20
R Visualizzare captcha di un altro sito? PHP 2
asevenx problema con codice di sicurezza captcha PHP 2
V Immagini CAPTCHA con ASP senza librerie esterne Classic ASP 0
K modulo invio mai:l non riesco ad integrare captcha PHP 18
B Problemi guestbook con immagine captcha Classic ASP 0
borgo italia captcha in falsh Flash 7
Z Come inserire Captcha PHP 6
A Implementare CAPTCHA in directory .asp Classic ASP 6
M CAPTCHA - come installarlo PHP 4
F Captcha nel guestbook Classic ASP 0
A Implementare captcha in asp Classic ASP 2
S [PHP] Confrontare due array con valori quasi uguali PHP 2
giorgiacampus Vendo un account Instagram da 5,7k e uno da quasi 3k Annunci servizi di Social Media Marketing 2
D Vendo pagina FB da quasi 50k Annunci servizi di Social Media Marketing 2
adri1234 Vendo pagina Facebook da quasi 29K LIKE Annunci servizi di Social Media Marketing 2
J [VENDO] pagina facebook con quasi 8k like Annunci servizi di Social Media Marketing 2
M Cedo Pagina quasi 300k Annunci servizi di Social Media Marketing 5
L popup che blocca la pagina .. quasi completato mi date un aiuto? jQuery 1
V [Vendo] Sito Web Adult con Guadagni e quasi 1000 utenti iscritti Compravendita siti e domini 1
G [VENDO] spam da pagine 150k quasi regalato Annunci servizi di Social Media Marketing 0
Monital Query su 3 tabelle quasi identiche PHP 1
P [JSP] Download di file di (quasi) ogni tipo! Java 6
MarcoGrazia 80% quasi finito di scaricare.... Discussioni Varie 3
A Database quasi pieno, e adesso? Database 2
borgo italia il mio (quasi) sito Presenta il tuo Sito 13
I Realizzo script php/mysql "quasi regalati". Offerte e Richieste di Lavoro e/o Collaborazione 1
S scambio link con tutti ( o quasi) Offerte e Richieste di scambio links 1
D Problemi Rete Molto Seri Quasi Diabolici Reti LAN e Wireless 1
peppoweb Falla Javascript, a rischio quasi tutti i browser Sicurezza e Virus 0
E c siamo quasi Webdesign e Grafica 3

Discussioni simili