Pagine: [1]
Stampa
Autore Discussione: Semplice Captcha Standalone  (Letto 1037 volte)
Matrix86
Amministratore
Full Member
*****

Popolarità: +7/-0
Scollegato Scollegato

Messaggi: 133



WWW
« inserito:: Settembre 23, 2008, 15:17:44 »

Quante volte nel nostro sito vediamo utenti falsi, o nei log dei servizi vediamo tante righe con pubblicità e quant'altro...beh vediamo come riuscire ad arginare semplicemente il problema inserendo un semplice captcha. Il captcha non è altro un sistema che verifica che il form sia stato effettivamente compilato da una persona e non da un software automatico. Il modo più semplice e anche il più diffuso è inserire una textbox nel form e un'immagine affianco a questo con una codice in essa. L'utente dovrà compilare il form e inserire nella texbox il codice rappresentato nella figura. Ovviamente solo le persone possono leggere nelle immagini e i bot vengono così esclusi (in realtà esistono anche sistemi molto avanzati che riescono tramite algoritmi di riconoscimento dei margini a individuare il codice...ma non funzionano al 100% su tutti i captcha).
Vediamo quindi come creare il tutto. Faremo uno script che si occuperà di creare un'immagine dinamica con il codice all'interno (tramite l'uso delle librerie GD). Il codice verrà inserito nel db e avrà una durata associata, per esempio qualche minuto..ogni qualvolta l'utente compila il form e inserisce il codice captcha, lo script dovrà controllare se il codice esiste e se esiste cancellarlo dal db!

SCRIPT CAPTCHA

Vediamo allora innanzitutto come creare il db:

Codice: (SQL)
CREATE TABLE `cpt_captcha` (
  `id` int(11) NOT NULL auto_increment,
  `code` text NOT NULL,
  `expirydate` int(11) NOT NULL default '0',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;

Creiamo il file con le configurazioni con i dati del nostro db:

Codice: (configuration.php)
<?php
// DATI SERVER MYSQL
$db_host="localhost";
$db_user="root";
$db_pass="";
$db_name="captcha";
$db_prefix "cpt_";
 
?>

Infine inseriamo nello script che riceve i dati del form, tra cui il codice, un require per includere il file verify_captcha.php e un richiamo alla funzione verify_captcha($codice):

Codice: (verify_captcha.php)
function verify_captcha($codice) {

  if( empty($codice) ) return "Inserire il Codice Captcha!";
  $code = addslashes( htmlspecialchars($codice) );
  @mysql_query("DELETE FROM ".$db_prefix."captcha WHERE expirydate <".time(),$connessione);
  $cap = mysql_query("SELECT * FROM ".$db_prefix."captcha WHERE code LIKE '".$code."'",$connessione);
  if(mysql_num_rows($cap) == 0) return "Codice Captcha errato!";
  else return NULL;
}

Codice: (esempio script che riceve il form)
if(isset($_POST['invia'] ) {
  if( isset($_POST['codice']) ) $ret=verify_captcha($_POST['codice']);
  else die("Codice captcha mancante");
  if($ret != NULL) die($ret);
  ...
  ...
}
« Ultima modifica: Novembre 21, 2009, 14:34:25 da Matrix86 » Registrato


Pagine: [1]
Stampa
 
Vai a: