PDA

View Full Version : [PHP] Verificare codice Captcha inserito nel form


stevross
01-06-2007, 20:18
Salve,
seguendo questa guida: http://www.white-hat-web-design.co.uk/articles/php-captcha.php
sto inserendo un controllo visivo all'interno di una pagina web.

Ho svolto la prima parte di lavoro, il codice è visualizzato correttamente.
Mi sorge un enorme dubbio in merito alla parte di lavoro inerente alla verifica di ciò che l'utente ha digitato.
La guida dice:

"Place the following in the code where the form is submitted to. This code will check what the user has typed matches the code in the image."

Nonostante io abbia capito cosa vuole dire, non ho capito DOVE va piazzato il codice di controllo.
Qualcuno mi da una mano?

andbin
01-06-2007, 21:23
Nonostante io abbia capito cosa vuole dire, non ho capito DOVE va piazzato il codice di controllo.
Qualcuno mi da una mano?La cosa funziona tipicamente così (tuttavia non è sicuramente l'unica soluzione):
- Lo script che genera la pagina HTML (quella che contiene il form) utilizza le sessioni e crea una variabile di sessione che contiene il numero/parola casuale per il captcha.
- Nella pagina che contiene il form c'è una immagine, il cui 'src' punta ad uno script che utilizza nuovamente le sessioni e che si occupa di leggere la variabile di sessione definita prima e di generare l'immagine.
- Lo script che viene eseguito a seguito dell'invio del form, utilizzerà la variabile di sessione per stabilire se il numero/parola inviato insieme al form corrisponde.

stevross
02-06-2007, 11:48
si, il mio problema attualmente è capire dove inserire il codice che verifica i dati inseriti nel form del captcha

anonimizzato
02-06-2007, 15:05
si, il mio problema attualmente è capire dove inserire il codice che verifica i dati inseriti nel form del captcha

Lo dovresti inserire in mezzo agli altri controlli sui campi che probabilmente fai già.

Es: alcuni campi obbligatori, indirizzo mail corretto ecc.

Il controllo sul Captcha avviene allo stesso modo riportando un errore e bloccando il submit del form in caso di codice mancante o inesatto.

stevross
02-06-2007, 15:17
eh, devo solo trovare i controlli sui campi.
in pratica sto inserendo captcha all'interno di uno script prelevato dal web.

stevross
02-06-2007, 16:14
Ok allora, il codice che verifica i dati contenuti nel forum è questo:

<?php
if(!isset($cusername)){
session_start();
require_once("../config.php");
}

if (isset($_POST["username"]) && ($_POST["username"] == $username) && ($_POST["password"] == $password) )
{
if(isset($_POST['remember'])){
setcookie("adminname",$username, time()+60*60*24*100, "/");
setcookie("adminpass", $password, time()+60*60*24*100, "/");
}

$_SESSION["admin"] = "true";
session_write_close();
header("Location:../admin.php");
exit;
}
if (isset($cusername) &&($cusername==$username) && ($cpassword==$password))
{
$_SESSION["admin"] = "true";
session_write_close();
header("Location:../admin.php");
exit;
}else
{
$_SESSION["error"] = "<font color=red>Wrong username or password. Try again.</font>";
header("Location:../admin.php?wrong=true");
}

?>

All'interno di questo devo riuscire a inserire quello che verifica il captcha, ovvero questo:

<?php
session_start();

if( isset($_POST['submit'])) {
if( $_SESSION['security_code'] == $_POST['security_code'] && !empty($_SESSION['security_code'] ) ) {
// Insert you code for processing the form here, e.g emailing the submission, entering it into a database.
echo 'Thank you. Your message said "'.$_POST['message'].'"';
unset($_SESSION['security_code']);
} else {
// Insert your code for showing an error message here
echo 'Sorry, you have provided an invalid security code';
}
} else {
?>

Non sono pratico di codice, chi mi da una mano?
Altrimenti faccio errori.