codeigniter
CAPTCHA-Helfer
Suche…
Dieser Helfer wird geladen
Dieser Helfer wird mit folgendem Code geladen:
Im Controller selbst (* kann sich immer wieder wiederholen *)
$this->load->helper('captcha');
In config/autoload.php
( nur einmal config/autoload.php
)
$autoload['helper'] = array('captcha');
create_captcha ($ data)
Verwendet ein Array von Informationen, um den CAPTCHA als Eingabe zu generieren, erstellt das Image gemäß Ihren Spezifikationen und gibt ein Array mit assoziativen Daten zum Image zurück.
[array]
(
'image' => IMAGE TAG
'time' => TIMESTAMP (in microtime)
'word' => CAPTCHA WORD
)
Das "Bild" ist das eigentliche Bild-Tag:
<img src="http://example.com/captcha/12345.jpg" width="140" height="50" />
Die "Zeit" ist der Mikro-Zeitstempel, der als Bildname ohne Dateierweiterung verwendet wird. Es wird eine Zahl wie diese sein: 1139612155.3422
Das "Wort" ist das Wort, das im Captcha-Bild erscheint. Wenn es nicht an die Funktion übergeben wird, wird es eine zufällige Zeichenfolge sein.
Den CAPTCHA-Helfer verwenden
Nach dem Laden können Sie ein Captcha wie folgt generieren:
$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'];
- Die Captcha-Funktion erfordert die GD-Bildbibliothek.
- Es werden nur der
img_path
undimg_url
benötigt. - Wird kein "Wort" angegeben, generiert die Funktion eine zufällige ASCII-Zeichenfolge. Sie könnten Ihre eigene Wortbibliothek zusammenstellen, aus der Sie nach dem Zufallsprinzip ziehen können.
- Wenn Sie keinen Pfad zu einer TRUE TYPE-Schriftart angeben, wird die native hässliche GD-Schriftart verwendet. Der "Captcha" -Ordner muss beschreibbar sein (666 oder 777)
- Das "Verfallsdatum" (in Sekunden) gibt an, wie lange ein Bild im Captcha-Ordner verbleibt, bevor es gelöscht wird. Der Standardwert ist zwei Stunden.
Vollständiges Beispiel
Hier ist ein Beispiel für die Verwendung mit einer Datenbank. Auf der Seite, auf der das CAPTCHA angezeigt wird, haben Sie etwa Folgendes:
$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="" />';
Dann haben Sie auf der Seite, die die Einreichung akzeptiert, Folgendes:
// 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";
}