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 e img_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";
}


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow