无法在CodeIgniter中获取Captcha图像

时间:2015-04-20 10:53:39

标签: php codeigniter captcha

我正在尝试创建一个登录页面。我想使用CI的助手添加验证码图像,但无法成功。

的login.php

class Login extends CI_Controller {

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

    public function index() {

        $this->load->helper(array('form', 'url', 'captcha'));

        $captchaSettings = array(
            'img_path' => base_url() . 'captcha',
            'img_url' => base_url() . 'captcha',
            'font_path' => base_url() . 'system/fonts/captcha4.ttf',
            'img_width' => '300',
            'img_height' => '40',
            'expiration' => '3600',
            'word_length' => 6,
            'font_size' => 16,
            'img_id' => 'captchaImage',
            'pool' => '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',
            // White background and border, black text and red grid
            'colors' => array(
                'background' => array(255, 255, 255),
                'border' => array(255, 255, 255),
                'text' => array(0, 0, 0),
                'grid' => array(255, 40, 40)
            )
        );

        $dataCaptcha = create_captcha($captchaSettings);
        $this->load->view('login_form', array('captcha' => $dataCaptcha));

    }
}

login_form.php 获取验证码图片,但在我使用boolean false查看其中包含的内容时显示var_dump

<?php var_dump($captcha); //boolean false?>

看起来create_captcha()会返回false而不是图像。所以我无法获得图像。但我做了教程所说的。

1 个答案:

答案 0 :(得分:4)

根据create_captcha函数的CodeIgniter API,这些可能是导致布尔值为false的原因。

 61:         if ($img_path == '' OR $img_url == '')
 62:         {
 63:             return FALSE;
 64:         }
 65: 
 66:         if ( ! @is_dir($img_path))
 67:         {
 68:             return FALSE;
 69:         }
 70: 
 71:         if ( ! is_writable($img_path))
 72:         {
 73:             return FALSE;
 74:         }
 75: 
 76:         if ( ! extension_loaded('gd'))
 77:         {
 78:             return FALSE;
 79:         }

所以请确保:

  1. 您发送img_path和img_url参数(请注意我的评论 关于参数名称中可能的拼写错误。

  2. img_path是一个可写的现有目录

  3. 您已安装GD扩展程序。

  4. <强>路径/网址

    我相信这是因为您使用base_url() . 'captcha'作为img_pathbase_url()返回格式为:http://www.domain.com/的网址,而路径应采用其他格式(相对),例如:./directory/captache/