Codice: Seleziona tutto
$x_images = array(
'0' => '111111',
'1' => '222222',
'2' => '333333'
);
Codice: Seleziona tutto
$x_images = array(
'0' => '111111',
'1' => '222222',
'2' => '333333'
);
Codice: Seleziona tutto
'0' => '0'
Codice: Seleziona tutto
<img src="<?php echo "captcha/$x_img_nome.jpg" /* puoi cambiare l'estensione ovvio */ ?>" /><br>
Codice: Seleziona tutto
'0' => '0'
Codice: Seleziona tutto
'0' => '0'
Codice: Seleziona tutto
'0' => 'test'
Codice: Seleziona tutto
<?php
/**
* Form di uso della nostra funzione
*/
// Richiamo come prima cosa il nostro file con le funzioni
require 'xir_captcha.php';
$array_domanda = xir_captcha_domanda();
$img_domanda = $array_domanda['domanda'];
$numero_associato = $array_domanda['numero_domanda'];
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width; initial-scale=1.0">
<title>Form Captcha</title>
<style type="text/css">
html,body { background-color: #222; }
form {
padding: 20px;
margin: 0 auto;
max-width: 50%;
background-color: #fff;
position: relative;
border: 2px solid black;
}
label,input,textarea {
width: 100%;
display: block;
text-align: center;
}
h1,h4 { text-align: center; color: white; }
.submit { margin-top: 10px; }
</style>
</head>
<body>
<h1>Form di prova del captcha</h1>
<form action="xir_captcha_validate.php" method="post">
<fieldset>
<legend>Name</legend>
<label for="name">Nome</label>
<input type="text" id="nome" name="nome_utente" placeholder="Nome Utente">
</fieldset>
<fieldset>
<legend>Messaggio</legend>
<label for="messaggio">Inserisci il tuo messaggio</label>
<textarea name="messaggio" id="mess" placeholder="Inserisci il tuo messaggio"></textarea>
</fieldset>
<fieldset>
<legend>Captcha</legend>
<label for="domanda"><img src="img/<?php echo $img_domanda; ?>.png" /> </label>
<input type="text" name="risposta_utente" id="risposta_utente" placeholder="Risposta di controllo">
<input type="hidden" name="numero_domanda" id="numero_domanda" value="<?php echo $numero_associato ?>">
<input type="submit" value="Posta il Messaggio" class="submit">
</fieldset>
</form>
<h4>Sir Xiradorn 2015</h4>
</body>
</html>
Codice: Seleziona tutto
<?php
/**
* Semplice captcha con immagini
* Funzioni di generazione del captcha semplice con una serie di domande
* @author Sir Xiradorn <http://xiradorn.it>
*/
/**
* Variabili di controllo
*/
$x_images = array(
'0' => '111111',
'1' => '222222',
'2' => '333333'
);
// questa variabile la possiamo attivare o meno se vuoi il testo senza vedere maiuscole e minuscole
$case_sensitive = false;
/**
* Funzione di calcolo del captcha
*/
function xir_captcha_domanda() {
// Riprendo le domande così non devo stare la a richiamarle
global $x_images;
// 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($x_images) - 1);
return array(
'domanda' => $x_images[$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) {
// Riprendo le risposte così non devo stare la a richiamarle
global $x_images, $case_sensitive;
// 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 = $x_images[$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;
}
/**
* Funzione di servizio con error log
* Segnalazione della tipoligia di errore e redirect forzato
*/
function xir_error_log($tipo) {
// timing del redirect ovvero dopo quanti secondi faccio il redirect forzato in caso di errore
$secondi = 5;
// variabile di servizio con messaggio di errore
$errore_target = $tipo;
$error_log = array(
'generico' => "No Alpitour? Ahiahiahihahihaihiiiiiiii. <br> Attenzione il <b>$errore_target</b> non è corretto. <br> Ritenta. <br> Tra $secondi secondi verrai indirizzato alla pagina della form"
);
// stampa a video dell'errore con il suo tipo
echo $error_log['generico'];
// redirect forzato alla form
header("Refresh:$secondi;url=index.php");
}
Codice: Seleziona tutto
<?php
/**
* Recupero il tutto dal post e faccio la validazione
*/
// recupero la funzione del captcha
require 'xir_captcha.php';
// come prima cosa recupero le variabili inviate
$numero_domanda = (isset($_POST['numero_domanda'])) ? $_POST['numero_domanda'] : 0;
$risposta_utente = (isset($_POST['risposta_utente'])) ? $_POST['risposta_utente'] : '';
// prelievo delle informazioni da inviare
$nome_utente = (isset($_POST['nome_utente'])) ? $_POST['nome_utente'] : '';
$messaggio = (isset($_POST['messaggio'])) ? $_POST['messaggio'] : '';
// consideriamo il controllo prima del nome poi del testo del messaggio e verifico il captcha
// se tutto è co stampo il tutto. Altrimenti errore
/* controllo il nome utente */
if (!empty($nome_utente) or $nome_utente !== '') {
/* controllo il messaggio */
if (!empty($messaggio) or $messaggio !== '') {
/* verifico il captcha */
$gettone_di_validita = xir_captcha_risposta($risposta_utente, $numero_domanda);
if ($gettone_di_validita == true) {
$html = <<<STAMPA
<h1>Form Grabber</h1>
<b>Nome:</b> $nome_utente <br>
<b>Messaggio:</b> $messaggio <br>
<b>Captcha:</b> $risposta_utente -> <span style="color: forestgreen; text-weight: bold;">Tutto OK</span>
STAMPA;
echo $html;
} else {
xir_error_log("captcha");
}
} else {
xir_error_log("messaggio");
}
} else {
xir_error_log("nome");
}
Visitano il forum: Baidu [Spider] e 23 ospiti