Tu vuoi creare un captcha giusto? Bene potresti fare un semplice array di domande e di risposte e farne il check. Facciamo un esempio semplicistico.
Questo è un esempio
Codice: Seleziona tutto
<?php
/**
* Semplice captcha
* Funzioni di generazione del captcha semplice con una serie di domande
* @author Sir Xiradorn <http://xiradorn.it>
*/
/**
* Variabili di controllo
*/
$domande = array(
'0' => 'Quale è il nome del creatore di questo codice?',
'1' => 'Quale è il nome del sito in cui ci troviamo ora?',
'2' => 'Quanto fa 2 + 2 - 1?',
);
// questa variabile la possiamo attivare o meno se vuoi il testo senza vedere maiuscole e minuscole
$case_sensitive = false;
$risposte = array(
'0' => 'xiradorn',
'1' => 'phpbbitalia',
'2' => '3',
);
/**
* Funzione di calcolo del captcha
*/
function xir_captcha_domanda() {
// generiamo il captcha e andiamo a prendere la domanda da una delle presenti
// per una migliore gestione vado a auto calcolare la lunghezza dell'array
// usiamo questo numero per il calcolo del valore random
$numero_random = rand(0, count($domande));
return array(
'domanda' => $domande[$numero_random],
'numero_domanda' => $numero_random
);
}
/**
* Questa funzione è usata per il controllo della risposta
* Ritornerà un vero se ho verificato la risposta. Falso se non ho verifica
*/
function xir_captcha_risposta($risposta_utente, $numero_domanda) {
// facciamo il check e vediamo se trova la nostra risposta
$valido = false;
// se voglio che sia non case sensitive e quindi tutto minuscolo
if($case_sensitive == false) {
$risposta_utente = strtolower($risposta_utente);
}
// facciamo un primo confronto per filtrare subito la risposta utile
// dato che mi sono portato il numero della domanda fuori
// posso pescarla senza cicli o altro e infatti
$risposta_di_controllo = $risposte[$numero_domanda];
// faccio il controllo
if ($risposta_utente === $risposta_di_controllo) {
$valido = true;
}
// ritorniamo il valore di controllo se e solo se il controllo
// si confà perfettamente al valore.
return $valido;
}
EDIT: Mi ero scordato una cosa