我正在尝试使用 codeigniter 实现验证码功能。但它不显示验证码图像。
这是我的代码:
//控制器文件:captcha.php
<?php
class Captcha extends CI_Controller {
var $controller = "captcha";
var $viewContent = array();
public function __construct() {
parent::__construct();
$this->load->view('header');
}
/* Function To load captcha view file */
function list_captcha() {
// 加载验证码助手
$this->load->helper('captcha');
$data = array(
'img_path' => './captcha/',
'img_url' => 'localhost/demoProject/application/captcha/',
'img_width' => '150',
'img_height' => 24,
'border' => 0,
'expiration' => 7200
);
$captchaArr = create_captcha($data);
$this->viewContent['captchaArr'] = $captchaArr;
$this->viewContent['captchaWord'] = $captchaArr['word'];
//echo"<pre>"; print_r($captchaArr);exit;
$this->viewContent['refreshUrl'] = "localhost/
demoProject/" . $this->controller . "/list_" . $this->controller;
$this->load->view($this->controller, $this->viewContent);
$this->load->view('footer');
}
}
?>
//查看文件:captcha.php
<script>
$(document).ready(function(){
$("#captcha").blur(function(){
if($("#captcha").val()== '<?php echo $captchaWord; ?>'){
alert('Captcha match');
}else{
alert('Please enter same word like captcha image.');
}
});
});
</script>
<table>
<tr>
<td>
Captcha Image
</td>
<td style="text-align: center">
<?php echo $captchaArr['image']; ?><br>
</td>
</tr>
<tr>
<td>Enter the same code here </td>
<td style="text-align: center">
<?php
$data = array('name' => 'captcha', 'id' => 'captcha');
echo form_input($data);
?>
</td>
</tr>
<tr>
<td>Can't read the image?</td>
<td style="text-align: center"> <a href="<?php echo $refreshUrl; ?>">Refresh</a></td>
</tr>
</table>
我不明白这段代码有什么问题......
我相信你的问题是这一行:
img_url' => 'localhost/demoProject/application/captcha/',
您的 URL 缺少
http://
协议标识符。
img_url
永远不会被验证码助手修改 - 它直接用于创建 <img>
标签,该标签会直接转储到您的 HTML 输出中。
当浏览器尝试加载图像时,它没有意识到这是一个网址,因此加载失败。
您应该修改这行代码以包含
http://
部分。更好的是,您应该使用 CodeIgniter 的 base_url()
函数生成 URL,以便您的代码能够灵活应对未来的更改。
您可以像下面这样制作验证码。
$values = array(
'word' => '', //Generate alternate word by default. You can also set your word.
'word_length' => 6, // To set length of captcha word.
'img_path' => './images/', // Create folder "images" in root directory, and give path.
'img_url' => base_url() .'images/', // To store captcha images in "images" folder.
'font_path' => FCPATH.'system/fonts/texb.ttf',
'img_width' => '250', //Set image width.
'img_height' => 50, // Set image height.
);
// "create_captcha" is function of "captcha helper", this will set array in helper library.
$captcha = create_captcha($values);
注意:- font_path 应包含绝对路径。
Codeigniter 3 验证码使用 GD 库,因此必须在 php.ini 文件中启用它。
;扩展名=gd2 => 扩展名=gd2 #删除;启用库
还要验证扩展目录 C:\xampp\php74 xt 中的库名称
如果 ext 是“php_gd2.dll”,则库将在 php.ini 中扩展=gd2 如果 ext 是“php_gd.dll”,那么库将在 php.ini 中扩展=gd