我是CodeIgniter的新手,我已经习惯了旧学校的php脚本,所以我需要一些帮助:
我想在我的一个表格中加入一个Captcha系统。 根据其documentation,要生成图像,您需要这样做:
<img id="captcha" src="/securimage/securimage_show" alt="CAPTCHA Image" />
我下载了这些文件,但是我把它放在哪里?我如何使用Codeigniter来调用securimage_show.php
文件?并将其内容输出到图像的src
属性?
答案 0 :(得分:0)
在Fuel(一个基于codeigniter的cms)中添加Captcha时,我将生成Captcha图像的php文件放在放置图像的文件夹中,然后以链接到图像的方式链接到它:
<?php echo img(array('src'=>'image_show.php', 'alt'=> 'CAPTCHA Image')); ?>
也许不是最好的解决方案,但它确实有效。
或者,只需使用专门为codeigniter编写的Captcha插件,例如NuCaptcha CodeIgniter插件,http://docs.nucaptcha.com/plugins/codeigniter。
答案 1 :(得分:0)
Codeigiter有验证码helper。
首先,您要创建一个文件夹,您可以在其中存储验证码图像,并赋予此文件夹执行读/写操作的权限。在这种情况下,我在codeigniter实例的根目录中创建了captcha
文件夹。
然后,我们要加载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']);
请注意,每当我创建它时,我都会在session
中保留生成的验证字(例如,在页面刷新时)。这样我就可以将原始captcha word
与我form
的输入进行比较。然后,我将在我的表单(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
}