【问题标题】:how to create captcha in codeigniter 2.1.0如何在 codeigniter 2.1.0 中创建验证码
【发布时间】:2012-06-09 10:46:01
【问题描述】:

如何在 codeigniter 2.1.0 加载助手 codeigniter 中创建验证码? 当我有模型 m_captcha 时:

    function __construct()
{
            parent::__construct();
}

    function setCaptcha()
    {
            $this->load->helper('captcha');
            $vals = array(
                'img_path'          => './asset/captcha',
                'img_url'           => base_url().'/asset/captcha',
                'expiration'        => 3600,// one hour
                'font_path'     => './system/fonts/georgia.ttf',
                'img_width'     => '140',
                'img_height'        => 30,
                'word'          => random_string('numeric', 6),
                );

            $cap = create_captcha($vals);
            if ($cap)
            {
                    $capdb = array(
                        'captcha_id'        => '',
                        'captcha_time'      => $cap['time'],
                        'ip_address'        => $this->CI->input->ip_address(),
                        'word'              => $cap['word']
                    );
                    $query = $this->db->insert_string('captcha', $capdb);
                    $this->db->query($query);
            }else {
                            return "Captcha not work" ;
                     }

                return $cap['image'] ;
}        

我有控制器 c_login:

   function __construct()
{
    parent::__construct();
    $this->load->model('m_captcha');
}   

    public function index()
    {
          $this->load->helper('captcha');
          $data = $this->m_captcha->setCaptcha();                            
          $this->load->view('login/v_form',$data);                        
    }

我有看法:

<?php echo form_open('c_login'); ?>
 <?php echo  $cap['image']; ?>
<?php echo form_error('captcha');?>
<?php echo form_close(); ?>

为什么验证码不能显示在视图中? 在 sms/asset/captcha 中定位文件夹和图像验证码。 sms 是文件夹根 Codeigniter。

【问题讨论】:

    标签: codeigniter captcha helper


    【解决方案1】:

    为什么不改用 reCaptcha? http://codeigniter.com/wiki/ReCAPTCHA 很容易实现!

    【讨论】:

      【解决方案2】:

      &lt;?php echo $cap['image']; ?&gt; 是问题所在。

      让我们再次检查流程,您正在从模型返回 $cap['image']

      然后,您在控制器中的$data 中接受了这一点。

      它必须是$data['capcha'],这样您才能在视图中使用$capcha 访问它。

      非常简单。

      【讨论】:

      • 我更改 $data = $this->m_captcha->setCaptcha(); $data['captcha'] = $this->m_captcha->setCaptcha();并查看 但结果是: C ,只有字母 C ,没有图像验证码和其他字母。
      • 你又误会了,仔细看上面的描述。您已经从模型返回'image',因此您无法以$captcha['image'] 的身份访问,它必须只是$captcha
      • [查看这里] (codeigniter.com/user_guide/helpers/captcha_helper.html),非常简单。
      • 好的,非常感谢kuku,问题解决了,因为我忘记更改文件夹验证码中的777权限。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-19
      • 1970-01-01
      • 2020-06-27
      • 1970-01-01
      • 2023-03-20
      • 2016-01-14
      相关资源
      最近更新 更多