У Codeigiter есть captcha helper.
Во-первых, вы хотите создать папку, в которой вы сможете хранить свои изображения с записями и предоставлять разрешениям этой папки выполнять операции чтения/записи. В этом случае я создал папку captcha
в корневом каталоге моего экземпляра codeigniter.
Затем мы хотим загрузить captcha
помощника:
$this->load->helper('captcha');
Давайте начать экземпляр капчи с нашими настройками (Вы можете сделать это либо в Controller
или View
с вашей формы):
$rand_string = strtoupper(random_string('nozero', 4));
$settings = array(
'word' => $rand_string,
'img_path' => './captcha/',
'img_url' => base_url() .'captcha/',
'img_width' => '250',
'img_height' => 35,
'expiration' => 7200
);
$cap = create_captcha($settings);
$this->session->set_userdata('captchaWord',$cap['word']);
Обратите внимание, что я сохраняю генерируемое слово captcha в своем session
всякий раз, когда я его создаю (например, при обновлении страницы). Таким образом, я могу сравнить оригинальные captcha word
с вводом от моего form
. Затем я буду отображаться генерироваться CAPTCHA изображение с полем ввода где-то в моей форме (View):
<form id="my_form">
<input type="text" name="captcha" value=""/>
<?= $cap['image']; ?>
</form>
Теперь все, что нужно сделать, это сравнить input
, полученным от my_form
с фактическим значением капчи (в моем контроллере, где я обрабатываю форму отправки):
$userCaptcha = $this->input->post('captcha');
$actual_word = $this->session->userdata('captchaWord');
if(strcmp(strtoupper($userCaptcha),strtoupper($actual_word)) == 0 ) {
// input and captcha are the same
}
@wallyk, ваше редактирование дало мой вопрос совершенно новое значение !! Вы изменились, например: «Я привык к старой школьной php ...» к «Я использую старую школу» ... Этот вопрос является общим, а не чем-то связанным с захватом. Это может быть что угодно! пожалуйста, не трогайте мой вопрос, если в нем нет чего-то действительно неправильного и не слепо редактировать что-то! – Krimson
Извините! Я часто редактирую вопросы и (ответы), чтобы улучшить грамматику и прояснить смысл. Прошу прощения за изменение смысла. Это не то, что я думал, что я делаю, и, конечно же, не намерен менять смысл. – wallyk
@wallyk ах, я знаю. Извините за то, что я так груб, я не хотел гневаться на вас. В тот момент я был просто раздражен. Приветствия :) :) – Krimson