无法在 CodeIgniter 中获取验证码图像

Could not get Captcha image in CodeIgniter

我正在尝试创建一个登录页面。我想使用 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 获取验证码图像,但当我使用 var_dump 查看它包含的内容时显示 boolean false

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

它看起来像 create_captcha() returns false 而不是图像。所以我无法获得图像。但是我按照教程说的做了。

根据 CodeIgniter API 的 create_captcha 函数,这些是布尔值 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 扩展。

Path/URL

我相信这是因为您使用 base_url() . 'captcha' 作为您的 img_pathbase_url() returns a url 格式为:http://www.domain.com/ 而路径应为另一种格式(相对),例如:./directory/captache/.