最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

php怎么解决验证码无法显示的问题

来源:动视网 责编:小采 时间:2020-11-06 11:42:43
文档

php怎么解决验证码无法显示的问题

php怎么解决验证码无法显示的问题:php解决验证码无法显示的问题的方法:1、检查php代码,确保代码全部正确;2、编辑php.ini配置文件,修改【extension = php_gd2.dll】;3、清除缓存区;4、重新启动apache服务器。PHP解决验证码无法显示的方法:(推荐教程:php视频教程)第一步:先确保代
推荐度:
导读php怎么解决验证码无法显示的问题:php解决验证码无法显示的问题的方法:1、检查php代码,确保代码全部正确;2、编辑php.ini配置文件,修改【extension = php_gd2.dll】;3、清除缓存区;4、重新启动apache服务器。PHP解决验证码无法显示的方法:(推荐教程:php视频教程)第一步:先确保代


PHP解决验证码无法显示的方法:

(推荐教程:php视频教程)

第一步:先确保代码没有写错

第二步:确保gd扩展库的开启

在php.ini在设置:extension=php_gd2.dll

第三步:清除缓存区

PHP关于缓存区的三个函数

ob_get_contents() - 返回输出缓冲区的内容

ob_flush() - 冲刷出(送出)输出缓冲区中的内容

ob_clean() - 清空(擦掉)输出缓冲区

ob_end_flush() - 冲刷出(送出)输出缓冲区内容并关闭缓冲

ob_end_clean() - 清空(擦除)缓冲区并关闭输出缓冲

flush() - 刷新输出缓冲

第四步:重新启动Apache服务器并再次运行

代码实现:

//Captcha.class.php文件名
<?php 

//定义最终的图像验证码类
final class Captcha{
	//私有的成员属性
	private $code;//验证码字符串
	private $codelen;//验证码长度
	private $width; //画布宽度
	private $height; //画布高度
	private $img; //图像资源
	private $fontsize; //字号大小
	private $fontfile; //字体文件

	//构造方法:对象初始化
	public function __construct($codelen=4,$width=100,$height=36,$fontsize=20)
	{	
	$this->codelen = $codelen;
	$this->width = $width;
	$this->height = $height;
	$this->fontsize = $fontsize;
	$this->fontfile = ".\\Public\\Home\\Fonts\\msyh.ttc";
	$this->code = $this->createCode();
	$this->img = $this->createImg();
	$this->createBg(); //给画布添加背景色
	$this->createText(); //写入字符串
	$this->line(); //增加干扰线
	$this->outPut(); //输出图像
	}

	//私有的生成验证码随机字符串
	private function createCode()
	{
	//产生随机的字符串数组
	$arr_str = array_merge(range('a', 'z'),range('A', 'Z'),range(0,9));
	//打乱数组
	shuffle($arr_str);
	shuffle($arr_str);
	//从数组中随机指定个数下标
	$arr_index = array_rand($arr_str,$this->codelen);
	//循环下标数组,构建随机字符串
	$str ="";
	foreach ($arr_index as $i) {
	$str .=$arr_str[$i];
	}
	//将验证码字符串存入sess
	$_SESSION['captcha'] = $str;
	return $str;
	}

	//私有的创建一个空画布
	private function createImg()
	{
	return imagecreatetruecolor($this->width, $this->height);
	}

	//私有的分配画布背景色
	private function createBg()
	{	
	$bgcolor = imagecolorallocate($this->img, mt_rand(0,255), mt_rand(0,200), mt_rand(100,255));
	//绘制带背景的矩形
	imagefilledrectangle($this->img, 0, 0,$this->width,$this->height, $bgcolor);
	}

	//私有的写入验证码字符串
	private function createText()
	{	
	//给文本分配颜色
	$color = imagecolorallocate($this->img, mt_rand(100,255), mt_rand(0,200), mt_rand(100,200));
	//写入字符串
	imagettftext($this->img, $this->fontsize, -12, 10, 20, $color, $this->fontfile, $this->code);
	//imagestring($this->img, $this->fontsize, 8, 8, $this->code, $color);
	}
	//私有的输出图像
	private function line()
	{
	//增加干扰线
	for($n=1;$n<$this->codelen;$n++){
	$linecolor = imagecolorallocate($this->img, mt_rand(0,200), mt_rand(0,200), mt_rand(0,200));
	imageline($this->img,mt_rand(0,80), mt_rand(0,30), mt_rand(0,100), mt_rand(0,30), $linecolor);
	}
	}
	//公共的输出图像
	private function outPut()
	{	
	//声明输出的内容的类型
	header("content-type:image/png");
	//输出图像
	imagepng($this->img);
	//销毁图像资源
	imagedestroy($this->img);
	}

}

MVC设计模式(部分代码如下)

<?php 
//LoginController.class.php文件名
//定义最终的登录控制器类
final class LoginController{
//创建验证码类对象
	public function captcha(){
	ob_clean();// 清空(擦掉)输出缓冲区
	
	//新建Captcha类对象;由于Captcha类只有一个公共的构造方法;新建对象时对调用构造方法里面传递的所有方法;
	$obj=new Captcha();
	}
}
l<!-- login.htm 文件名 -->
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>login</title>
</head>
<body>
<img src="?p=Home&c=Login&a=captcha" onclick="this.src='?p=Home&c=Login&a=captcha&'+Math.random()" style="cursor: pointer;">
<!-- onclick函数触发更新验证码 -->
</body>
</html>

文档

php怎么解决验证码无法显示的问题

php怎么解决验证码无法显示的问题:php解决验证码无法显示的问题的方法:1、检查php代码,确保代码全部正确;2、编辑php.ini配置文件,修改【extension = php_gd2.dll】;3、清除缓存区;4、重新启动apache服务器。PHP解决验证码无法显示的方法:(推荐教程:php视频教程)第一步:先确保代
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top