0

我是 CodeIgniter 的新手,我已经习惯了老式的 php 脚本,所以我需要一些帮助:

我想在我的一种形式中包含一个验证码系统。根据其文档,要生成图像,您需要这样做:

<img id="captcha" src="/securimage/securimage_show" alt="CAPTCHA Image" />

我下载了文件,但我把它们放在哪里?以及如何使用 Codeigniter 调用该securimage_show.php文件?并将其内容输出到src图像的属性中?

4

2 回答 2

0

Codeigiter 有一个验证码助手

首先,您要创建一个文件夹,您可以在其中存储您的验证码图像并授予此文件夹执行读/写操作的权限。在这种情况下,我在captcha我的 codeigniter 实例的根目录中创建了文件夹。

然后,我们要加载captcha助手:

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

让我们使用我们的设置启动验证码实例(您可以在表单中ControllerView表单中执行此操作):

$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. 然后,我将在表单(视图)的某处显示生成的带有输入字段的验证码图像:

<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
}
于 2014-03-08T03:51:44.293 回答
0

在 Fuel(基于 codeigniter 的 cms)中添加 Captcha 时,我将生成 Captcha 图像的 php 文件放在放置图像的文件夹中,然后以与链接到图像相同的方式链接到它:

<?php echo img(array('src'=>'image_show.php', 'alt'=> 'CAPTCHA Image')); ?>

也许不是最好的解决方案,但它确实有效。

或者,只需使用专门为 codeigniter 编写的验证码插件,例如 NuCaptcha CodeIgniter 插件,http: //docs.nucaptcha.com/plugins/codeigniter 。

于 2013-07-31T16:48:01.747 回答