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 KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

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)

Heiße Themen

Java-Tutorial
1663
14
PHP-Tutorial
1266
29
C#-Tutorial
1239
24
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

Viele Benutzer werden sich bei der Auswahl von Smartwatches für die Marke Huawei entscheiden. Viele Benutzer sind neugierig auf den Unterschied zwischen Huawei GT3pro und GT4. Was sind die Unterschiede zwischen Huawei GT3pro und GT4? 1. Aussehen GT4: 46 mm und 41 mm, das Material ist Glasspiegel + Edelstahlgehäuse + hochauflösende Faserrückschale. GT3pro: 46,6 mm und 42,9 mm, das Material ist Saphirglas + Titangehäuse/Keramikgehäuse + Keramikrückschale 2. Gesundes GT4: Mit dem neuesten Huawei Truseen5.5+-Algorithmus werden die Ergebnisse genauer. GT3pro: EKG-Elektrokardiogramm sowie Blutgefäß und Sicherheit hinzugefügt

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

Warum das Snipping-Tool unter Windows 11 nicht funktioniert Das Verständnis der Grundursache des Problems kann dabei helfen, die richtige Lösung zu finden. Hier sind die häufigsten Gründe, warum das Snipping Tool möglicherweise nicht ordnungsgemäß funktioniert: Focus Assistant ist aktiviert: Dies verhindert, dass das Snipping Tool geöffnet wird. Beschädigte Anwendung: Wenn das Snipping-Tool beim Start abstürzt, ist es möglicherweise beschädigt. Veraltete Grafiktreiber: Inkompatible Treiber können das Snipping-Tool beeinträchtigen. Störungen durch andere Anwendungen: Andere laufende Anwendungen können mit dem Snipping Tool in Konflikt geraten. Das Zertifikat ist abgelaufen: Ein Fehler während des Upgrade-Vorgangs kann zu diesem Problem führen. Diese einfache Lösung ist für die meisten Benutzer geeignet und erfordert keine besonderen technischen Kenntnisse. 1. Aktualisieren Sie Windows- und Microsoft Store-Apps

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

In HTML5 bedeutet „Breite“ die Breite des Inhaltsbereichs. Sie können innere Ränder, Ränder und äußere Ränder außerhalb des Inhaltsbereichs hinzufügen Element.

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

Teil 1: Erste Schritte zur Fehlerbehebung Überprüfen des Apple-Systemstatus: Bevor wir uns mit komplexen Lösungen befassen, beginnen wir mit den Grundlagen. Das Problem liegt möglicherweise nicht an Ihrem Gerät; die Server von Apple sind möglicherweise ausgefallen. Besuchen Sie die Systemstatusseite von Apple, um zu sehen, ob der AppStore ordnungsgemäß funktioniert. Wenn es ein Problem gibt, können Sie nur warten, bis Apple es behebt. Überprüfen Sie Ihre Internetverbindung: Stellen Sie sicher, dass Sie über eine stabile Internetverbindung verfügen, da das Problem „Verbindung zum AppStore nicht möglich“ manchmal auf eine schlechte Verbindung zurückzuführen ist. Versuchen Sie, zwischen WLAN und mobilen Daten zu wechseln oder die Netzwerkeinstellungen zurückzusetzen (Allgemein > Zurücksetzen > Netzwerkeinstellungen zurücksetzen > Einstellungen). Aktualisieren Sie Ihre iOS-Version:

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

php提交表单通过后,弹出的对话框怎样在当前页弹出php提交表单通过后,弹出的对话框怎样在当前页弹出而不是在空白页弹出?想实现这样的效果:而不是空白页弹出:------解决方案--------------------如果你的验证用PHP在后端,那么就用Ajax;仅供参考:HTML code

Lassen Sie uns darüber sprechen, warum Vue2 dadurch in verschiedenen Optionen auf Eigenschaften zugreifen kann Lassen Sie uns darüber sprechen, warum Vue2 dadurch in verschiedenen Optionen auf Eigenschaften zugreifen kann Dec 08, 2022 pm 08:22 PM

Dieser Artikel hilft Ihnen bei der Interpretation des Vue-Quellcodes und stellt vor, warum Sie damit in Vue2 auf Eigenschaften in verschiedenen Optionen zugreifen können. Ich hoffe, dass er für alle hilfreich ist!

Ein Artikel, der diesen Punkt versteht und 70 % der Front-End-Leute erreicht Ein Artikel, der diesen Punkt versteht und 70 % der Front-End-Leute erreicht Sep 06, 2022 pm 05:03 PM

Ein Kollege blieb aufgrund eines Fehlers stecken, auf den dadurch hingewiesen wurde. Dieses Zeigeproblem führte dazu, dass eine Pfeilfunktion verwendet wurde, was dazu führte, dass die entsprechenden Requisiten nicht abgerufen werden konnten. Er wusste es nicht, als ich es ihm vorstellte, und dann habe ich mir bewusst die Front-End-Kommunikationsgruppe angesehen. Bisher verstehen es mindestens 70 % der Front-End-Programmierer nicht Sie diesen Link Wenn alles unklar ist Wenn Sie es noch nicht gelernt haben, geben Sie mir bitte eine große Klappe.

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 In der Frontend-Entwicklung ist CSS eine leistungsstarke Stildefinitionssprache. Unter diesen sind Höhe und Breite die beiden grundlegendsten Dimensionsattribute, mit denen die Höhe und Breite des Elements definiert werden. In diesem Artikel werden diese beiden Eigenschaften im Detail analysiert und spezifische Codebeispiele bereitgestellt. 1. Höhenattribut Das Höhenattribut wird verwendet, um die Höhe eines Elements zu definieren. Sie können Pixel, Prozent oder verwenden

See all articles