Поиск…


Загрузка этого помощника

Этот помощник загружается с использованием следующего кода:

В самом контроллере (* может повторяться снова и снова *)

$this->load->helper('captcha');

В config/autoload.php ( загрузка только один раз )

$autoload['helper'] = array('captcha');

create_captcha ($ данные)

Принимает массив информации для создания CAPTCHA в качестве входных данных и создает изображение в соответствии с вашими спецификациями, возвращая массив ассоциативных данных об изображении.

[array]
(
  'image' => IMAGE TAG
  'time'    => TIMESTAMP (in microtime)
  'word'    => CAPTCHA WORD
)

«Image» - это фактический тег изображения:

<img src="http://example.com/captcha/12345.jpg" width="140" height="50" />

«Время» - это временная метка времени, используемая в качестве имени изображения без расширения файла. Это будет такой номер: 1139612155.3422

«Слово» - это слово, которое появляется в изображении captcha, которое, если оно не предоставляется функции, будет случайной строкой.

Использование помощника CAPTCHA

После загрузки вы можете создать такой код:

$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'];
  • Функция captcha требует библиотеки изображений GD.
  • img_path только img_path и img_url .
  • Если «слово» не предоставляется, функция генерирует произвольную строку ASCII. Вы можете собрать свою собственную библиотеку слов, из которой вы можете произвольно рисовать.
  • Если вы не укажете путь к шрифту TRUE TYPE, будет использоваться собственный уродливый шрифт GD. Папка «captcha» должна быть доступна для записи (666 или 777)
  • «Истечение» (в секундах) означает, как долго изображение останется в папке captcha, прежде чем оно будет удалено. Значение по умолчанию - два часа.

Полный пример

Ниже приведен пример использования базы данных. На странице, где будет отображаться CAPTCHA, вы увидите что-то вроде этого:

$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="" />';

Затем, на странице, которая принимает представление, у вас будет что-то вроде этого:

// 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
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow