Heim Backend-Entwicklung PHP-Tutorial php验证码和不能正常显示解决办法

php验证码和不能正常显示解决办法

Jun 13, 2016 am 11:51 AM
gt height lt this width

php验证码和不能正常显示解决方法

效果如图:

?

文件都放到了同一文件夹下。

?

CreateImage.class.php

<?phpclass ValidationCode{	private $width,$height,$codenum;	public $checkcode;     //产生的验证码	private $checkimage;    //验证码图片	private $disturbColor = ''; //干扰像素		function __construct($width='80',$height='20',$codenum='4')	{	   $this->width=$width;	   $this->height=$height;	   $this->codenum=$codenum;	}		function outImg()	{	   //输出头	   $this->outFileHeader();	   //产生验证码	   $this->createCode();		   //产生图片	   $this->createImage();	   //设置干扰像素	   $this->setDisturbColor();	   //往图片上写验证码	   $this->writeCheckCodeToImage();	   imagepng($this->checkimage);	   imagedestroy($this->checkimage);	}		private function outFileHeader()	{	   header ('Content-type: image/png');	}		private function createCode()	{	   $this->checkcode = strtoupper(substr(md5(rand()),0,$this->codenum));	}		private function createImage()	{	   $this->checkimage = @imagecreate($this->width,$this->height);	   $back = imagecolorallocate($this->checkimage,255,255,255);	   $border = imagecolorallocate($this->checkimage,0,0,0);  	   imagefilledrectangle($this->checkimage,0,0,$this->width - 1,$this->height - 1,$back); // 白色底	   imagerectangle($this->checkimage,0,0,$this->width - 1,$this->height - 1,$border);   // 黑色边框	}		private function setDisturbColor()	{	   for ($i=0;$i<=200;$i++)	   {		$this->disturbColor = imagecolorallocate($this->checkimage, rand(0,255), rand(0,255), rand(0,255));		imagesetpixel($this->checkimage,rand(2,128),rand(2,38),$this->disturbColor);	   }	}		private function writeCheckCodeToImage()	{	   for ($i=0;$i<=$this->codenum;$i++)	   {		$bg_color = imagecolorallocate ($this->checkimage, rand(0,255), rand(0,128), rand(0,255));		$x = floor($this->width/$this->codenum)*$i;		$y = rand(0,$this->height-15);		imagechar ($this->checkimage, rand(5,8), $x, $y, $this->checkcode[$i], $bg_color);	   }	}		function __destruct()	{	   unset($this->width,$this->height,$this->codenum);	}}
Nach dem Login kopieren

?

checks.php

?

<?phpini_set('display_errors','off');session_start();header("content-type:image/png");  	  //设置创建图像的格式$image_width=70;                      //设置图像宽度$image_height=18;                     //设置图像高度srand(microtime()*100000);         	  //设置随机数的种子for($i=0;$i<4;$i++){                  //循环输出一个4位的随机数   $new_number.=dechex(rand(0,15));}$_SESSION[check_checks]=$new_number;    //将获取的随机数验证码写入到SESSION变量中     $num_image=imagecreate($image_width,$image_height);  //创建一个画布imagecolorallocate($num_image,255,255,255);     	 //设置画布的颜色for($i=0;$i<strlen($_SESSION[check_checks]);$i++){  //循环读取SESSION变量中的验证码   $font=mt_rand(3,5);                            	//设置随机的字体   $x=mt_rand(1,8)+$image_width*$i/4;               //设置随机字符所在位置的X坐标   $y=mt_rand(1,$image_height/4);                   //设置随机字符所在位置的Y坐标   $color=imagecolorallocate($num_image,mt_rand(0,100),mt_rand(0,150),mt_rand(0,200));  	 //设置字符的颜色   imagestring($num_image,$font,$x,$y,$_SESSION[check_checks][$i],$color);				     //水平输出字符}imagepng($num_image);      			//生成PNG格式的图像imagedestroy($num_image);  			//释放图像资源?>
Nach dem Login kopieren

?

index.php

?

<?phpheader("content-type:text/html; charset=utf-8");session_start();if(!empty($_POST["Submit"])){$checks=$_POST["checks"];if($checks==""){echo "<script> alert('验证码不能为空');window.location.href='index.php';</script>";}if($checks==$_SESSION[check_checks]){	echo "<script> alert('用户登录成功!');window.location.href='index.php';</script>";}else{	echo "<script> alert('您输入的验证码不正确!');window.location.href='index.php';</script>";}}?><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>rand函数的应用</title><style type="text/css"><!--.STYLE1 {	font-size: 12px;	color: #FFFFFF;	font-weight: bold;}.style2 {font-weight: bold; font-size: 12px;}--></style></head><body><form name="form" method="post" action=""><input type="hidden" name="Submit" id="Submit" value="1" />  <table width="1003" border="0" cellspacing="0" cellpadding="0">    <tr>      <td width="168" height="169" background="images/index_01.gif"> </td>      <td width="685" background="images/index_02.gif"> </td>      <td width="150" background="images/index_03.gif"> </td>    </tr>    <tr>      <td width="168" height="311" background="images/index_04.gif"> </td>      <td background="images/index_05.gif"><table width="675" height="169"  border="0" cellpadding="0" cellspacing="0">        <tr>          <td height="43" align="center" valign="baseline"> </td>          <td align="center" valign="middle"> </td>          <td align="center" valign="baseline"> </td>        </tr>        <tr>          <td width="382" height="24" align="center" valign="baseline"> </td>          <td width="207" height="24" valign="middle"><span class="style2">用户名</span><span class="STYLE1">            <input  name="txt_user" id="txt_user" style="height:20px " size="10">              </span></td>          <td width="86" height="24" align="center" valign="baseline"> </td>        </tr>        <tr>          <td height="24" align="center" valign="baseline"> </td>          <td height="24" valign="middle"><span class="style2">密码</span><span class="STYLE1">          <input  name="txt_pwd" type="password" id="txt_pwd" style="FONT-SIZE: 9pt; height:20px" size="10">          </span></td>          <td height="24" align="center" valign="baseline"> </td>        </tr>        <tr>          <td height="24" align="center" valign="baseline"> </td>          <td height="24" valign="middle"><span class="style2">验证码</span><span class="STYLE1">          <input name="checks" size="6" style="height:20px ">          <img  src="/static/imghw/default1.png"  data-src="./checks.php"  class="lazy"    style="max-width:90%"  style="max-width:90%" border="0" align="bottom" alt="php验证码和不能正常显示解决办法" ></span>  </td>          <td height="24" align="center" valign="baseline"> </td>        </tr>        <tr>          <td height="40" align="center" valign="baseline"> </td>          <td align="center" valign="baseline">    <input type="submit" id="Submit" name="Submit" value="登录" /></td>          <td align="center" valign="baseline"> </td>        </tr>      </table></td>      <td background="images/index_06.gif"> </td>    </tr>    <tr>      <td height="100"> </td>      <td> </td>      <td> </td>    </tr>  </table></form></body></html>
Nach dem Login kopieren

?

************************************容易出现的问题*************

?

?

?

1.未开启php_gd2.dll? 去php.ini将其前面的“ ;”去掉

2.上面的checks.php中

3.字符编码改为统一的

4.最容易忽略的一点:

? 你本机上的环境是将报错提示全部打开的,所以在输出时有系统的未定义提示信息也跟着一起输出了,这样生成的图片肯定就不正常了,方法有两,在ValidationCode.php和checks.php文件开头加上ini_set('display_errors',?'Off');??就ok了

?

?

?

**********************************************************

?

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße Artikel -Tags

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Was sind die Unterschiede zwischen Huawei GT3 Pro und GT4? Was sind die Unterschiede zwischen Huawei GT3 Pro und GT4? Dec 29, 2023 pm 02:27 PM

Was sind die Unterschiede zwischen Huawei GT3 Pro und GT4?

Fix: Snipping-Tool funktioniert unter Windows 11 nicht Fix: Snipping-Tool funktioniert unter Windows 11 nicht Aug 24, 2023 am 09:48 AM

Fix: Snipping-Tool funktioniert unter Windows 11 nicht

So beheben Sie den Fehler „Verbindung zum App Store nicht möglich' auf dem iPhone So beheben Sie den Fehler „Verbindung zum App Store nicht möglich' auf dem iPhone Jul 29, 2023 am 08:22 AM

So beheben Sie den Fehler „Verbindung zum App Store nicht möglich' auf dem iPhone

Was bedeutet die Breite von HTML? Was bedeutet die Breite von HTML? Jun 03, 2021 pm 02:15 PM

Was bedeutet die Breite von HTML?

php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 Jun 13, 2016 am 10:23 AM

php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决

Detaillierte Erläuterung der CSS-Dimensionseigenschaften: Höhe und Breite Detaillierte Erläuterung der CSS-Dimensionseigenschaften: Höhe und Breite Oct 21, 2023 pm 12:42 PM

Detaillierte Erläuterung der CSS-Dimensionseigenschaften: Höhe und Breite

Ist watch4pro besser oder GT? Ist watch4pro besser oder GT? Sep 26, 2023 pm 02:45 PM

Ist watch4pro besser oder GT?

Welche Methoden gibt es, um den Breitenwert in CSS auszudrücken? Welche Methoden gibt es, um den Breitenwert in CSS auszudrücken? Nov 13, 2023 pm 05:47 PM

Welche Methoden gibt es, um den Breitenwert in CSS auszudrücken?

See all articles