codeigniter
Assistente CAPTCHA
Ricerca…
Caricamento di questo Helper
Questo helper viene caricato utilizzando il seguente codice:
Nel controller stesso (* può ripetere ancora e ancora *)
$this->load->helper('captcha');
In config/autoload.php
( carica solo una volta )
$autoload['helper'] = array('captcha');
create_captcha ($ data)
Prende una serie di informazioni per generare CAPTCHA come input e crea l'immagine secondo le tue specifiche, restituendo una serie di dati associativi sull'immagine.
[array]
(
'image' => IMAGE TAG
'time' => TIMESTAMP (in microtime)
'word' => CAPTCHA WORD
)
La "immagine" è il tag immagine attuale:
<img src="http://example.com/captcha/12345.jpg" width="140" height="50" />
Il "tempo" è il micro timestamp utilizzato come nome dell'immagine senza l'estensione del file. Sarà un numero come questo: 1139612155.3422
La "parola" è la parola che appare nell'immagine captcha, che se non viene fornita alla funzione, sarà una stringa casuale.
Utilizzo dell'assistente CAPTCHA
Una volta caricato, puoi generare un captcha come questo:
$vals = array(
'word' => 'Random word',
'img_path' => './captcha/',
'img_url' => 'http://example.com/captcha/',
'font_path' => './path/to/fonts/texb.ttf',
'img_width' => '150',
'img_height' => 30,
'expiration' => 7200
);
$cap = create_captcha($vals);
echo $cap['image'];
- La funzione captcha richiede la libreria di immagini GD.
- Sono richiesti solo
img_path
eimg_url
. - Se non viene fornita una "parola", la funzione genererà una stringa ASCII casuale. Potresti mettere insieme la tua biblioteca di parole da cui puoi disegnare a caso.
- Se non si specifica un percorso per un font TRUE TYPE, verrà utilizzato il font GD brutto nativo. La cartella "captcha" deve essere scrivibile (666 o 777)
- La "scadenza" (in secondi) indica per quanto tempo un'immagine rimarrà nella cartella captcha prima che venga cancellata. Il valore predefinito è due ore.
Esempio completo
Ecco un esempio di utilizzo con un database. Nella pagina in cui verrà mostrato CAPTCHA avrai qualcosa di simile a questo:
$this->load->helper('captcha');
$vals = array(
'img_path' => './captcha/',
'img_url' => 'http://example.com/captcha/'
);
$cap = create_captcha($vals);
$data = array(
'captcha_time' => $cap['time'],
'ip_address' => $this->input->ip_address(),
'word' => $cap['word']
);
$query = $this->db->insert_string('captcha', $data);
$this->db->query($query);
echo 'Submit the word you see below:';
echo $cap['image'];
echo '<input type="text" name="captcha" value="" />';
Quindi, nella pagina che accetta l'invio avrai qualcosa di simile a questo:
// First, delete old captchas
$expiration = time()-7200; // Two hour limit
$this->db->query("DELETE FROM captcha WHERE captcha_time < ".$expiration);
// Then see if a captcha exists:
$sql = "SELECT COUNT(*) AS count FROM captcha WHERE word = ? AND ip_address = ? AND captcha_time > ?";
$binds = array($_POST['captcha'], $this->input->ip_address(), $expiration);
$query = $this->db->query($sql, $binds);
$row = $query->row();
if ($row->count == 0)
{
echo "You must submit the word that appears in the image";
}