无法在 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: }
因此请确保:
你发送 img_path 和 img_url 参数(注意我的评论
关于参数名称中可能的错字)。
img_path是一个存在的目录,也是可写的
您已经安装了 GD 扩展。
Path/URL
我相信这是因为您使用 base_url() . 'captcha'
作为您的 img_path
。
base_url()
returns a url 格式为:http://www.domain.com/
而路径应为另一种格式(相对),例如:./directory/captache/
.
我正在尝试创建一个登录页面。我想使用 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: }
因此请确保:
你发送 img_path 和 img_url 参数(注意我的评论 关于参数名称中可能的错字)。
img_path是一个存在的目录,也是可写的
您已经安装了 GD 扩展。
Path/URL
我相信这是因为您使用 base_url() . 'captcha'
作为您的 img_path
。
base_url()
returns a url 格式为:http://www.domain.com/
而路径应为另一种格式(相对),例如:./directory/captache/
.