我正在尝试创建一个登录页面。我想使用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
而不是图像。所以我无法获得图像。但我做了教程所说的。
答案 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: }
所以请确保:
您发送img_path和img_url参数(请注意我的评论 关于参数名称中可能的拼写错误。
img_path是一个可写的现有目录
您已安装GD扩展程序。
<强>路径/网址
我相信这是因为您使用base_url() . 'captcha'
作为img_path
。
base_url()
返回格式为:http://www.domain.com/
的网址,而路径应采用其他格式(相对),例如:./directory/captache/
。