使用codeigniter从另一个文件执行代码

时间:2013-07-31 16:32:57

标签: codeigniter

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

我想在我的一个表格中加入一个Captcha系统。 根据其documentation,要生成图像,您需要这样做:

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

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

2 个答案:

答案 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');

让我们使用我们的设置启动验证码的实例(您可以使用表单在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的输入进行比较。然后,我将在我的表单(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
}