Rumah pembangunan bahagian belakang tutorial php 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);	}}
Salin selepas log masuk

?

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);  			//释放图像资源?>
Salin selepas log masuk

?

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>
Salin selepas log masuk

?

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

?

?

?

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

2.上面的checks.php中

3.字符编码改为统一的

4.最容易忽略的一点:

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

?

?

?

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

?

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Apakah perbezaan antara Huawei GT3 Pro dan GT4? Apakah perbezaan antara Huawei GT3 Pro dan GT4? Dec 29, 2023 pm 02:27 PM

Ramai pengguna akan memilih jenama Huawei apabila memilih jam tangan pintar Antaranya, Huawei GT3pro dan GT4 adalah pilihan yang sangat popular. Apakah perbezaan antara Huawei GT3pro dan GT4? 1. Rupa GT4: 46mm dan 41mm, bahan cermin kaca + badan keluli tahan karat + cangkang belakang gentian resolusi tinggi. GT3pro: 46.6mm dan 42.9mm, bahannya ialah kaca nilam + badan titanium/badan seramik + cangkerang belakang seramik 2. GT4 yang sihat: Menggunakan algoritma Huawei Truseen5.5+ terkini, hasilnya akan lebih tepat. GT3pro: Penambahan elektrokardiogram ECG dan saluran darah serta keselamatan

Betulkan: Alat snipping tidak berfungsi dalam Windows 11 Betulkan: Alat snipping tidak berfungsi dalam Windows 11 Aug 24, 2023 am 09:48 AM

Mengapa Alat Snipping Tidak Berfungsi pada Windows 11 Memahami punca masalah boleh membantu mencari penyelesaian yang betul. Berikut ialah sebab utama Alat Snipping mungkin tidak berfungsi dengan betul: Focus Assistant dihidupkan: Ini menghalang Snipping Tool daripada dibuka. Aplikasi rosak: Jika alat snipping ranap semasa pelancaran, ia mungkin rosak. Pemacu grafik lapuk: Pemacu yang tidak serasi mungkin mengganggu alat snipping. Gangguan daripada aplikasi lain: Aplikasi lain yang sedang berjalan mungkin bercanggah dengan Alat Snipping. Sijil telah tamat tempoh: Ralat semasa proses naik taraf boleh menyebabkan penyelesaian mudah ini sesuai untuk kebanyakan pengguna dan tidak memerlukan sebarang pengetahuan teknikal khusus. 1. Kemas kini apl Windows dan Microsoft Store

html的width是什么意思 html的width是什么意思 Jun 03, 2021 pm 02:15 PM

在html5中,width的意思是宽度,width属性定义元素内容区的宽度,在内容区外面可以增加内边距、边框和外边距,只需要给元素设置“元素{width:数值}”即可。

Cara Membetulkan Ralat Tidak Dapat Menyambung ke App Store pada iPhone Cara Membetulkan Ralat Tidak Dapat Menyambung ke App Store pada iPhone Jul 29, 2023 am 08:22 AM

Bahagian 1: Langkah Penyelesaian Masalah Awal Menyemak Status Sistem Apple: Sebelum menyelidiki penyelesaian yang rumit, mari kita mulakan dengan asas. Masalahnya mungkin tidak terletak pada peranti anda; Lawati halaman Status Sistem Apple untuk melihat sama ada AppStore berfungsi dengan betul. Jika terdapat masalah, anda hanya boleh menunggu Apple membetulkannya. Semak sambungan Internet anda: Pastikan anda mempunyai sambungan internet yang stabil kerana isu "Tidak dapat menyambung ke AppStore" kadangkala boleh dikaitkan dengan sambungan yang lemah. Cuba tukar antara Wi-Fi dan data mudah alih atau tetapkan semula tetapan rangkaian (Umum > Tetapkan Semula > Tetapkan Semula Tetapan Rangkaian > Tetapan). Kemas kini versi iOS anda:

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

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

Penjelasan terperinci tentang sifat dimensi CSS: tinggi dan lebar Penjelasan terperinci tentang sifat dimensi CSS: tinggi dan lebar Oct 21, 2023 pm 12:42 PM

Penjelasan terperinci tentang sifat dimensi CSS: tinggi dan lebar Dalam pembangunan bahagian hadapan, CSS ialah bahasa definisi gaya yang berkuasa. Antaranya, ketinggian dan lebar ialah dua atribut dimensi paling asas, digunakan untuk menentukan ketinggian dan lebar elemen. Artikel ini akan menganalisis kedua-dua sifat ini secara terperinci dan memberikan contoh kod khusus. 1. Atribut ketinggian Atribut ketinggian digunakan untuk menentukan ketinggian sesuatu elemen. Anda boleh menggunakan piksel, peratusan atau

Artikel untuk memahami panduan ini dan mengejar 70% orang hadapan Artikel untuk memahami panduan ini dan mengejar 70% orang hadapan Sep 06, 2022 pm 05:03 PM

Seorang rakan sekerja tersekat kerana pepijat yang ditunjukkan oleh masalah penunjuk Vue2 ini menyebabkan fungsi anak panah digunakan, mengakibatkan ketidakupayaan untuk mendapatkan prop yang sepadan. Dia tidak tahu apabila saya memperkenalkannya kepadanya, dan kemudian saya sengaja melihat kumpulan pertukaran bahagian hadapan Setakat ini, sekurang-kurangnya 70% pengaturcara bahagian hadapan masih tidak memahaminya anda pautan ini. Jika semuanya tidak jelas saya belum belajar bagaimana untuk melakukannya, sila berikan saya mulut yang besar.

Adakah watch4pro lebih baik atau gt? Adakah watch4pro lebih baik atau gt? Sep 26, 2023 pm 02:45 PM

Watch4pro dan gt masing-masing mempunyai ciri yang berbeza dan senario yang berkenaan Jika anda menumpukan pada fungsi yang komprehensif, prestasi tinggi dan penampilan yang bergaya, dan sanggup menanggung harga yang lebih tinggi, maka Watch 4 Pro mungkin lebih sesuai. Jika anda tidak mempunyai keperluan fungsi yang tinggi dan memberi lebih perhatian kepada hayat bateri dan harga yang berpatutan, maka siri GT mungkin lebih sesuai. Pilihan terakhir harus diputuskan berdasarkan keperluan peribadi, belanjawan dan keutamaan Adalah disyorkan untuk mempertimbangkan dengan teliti keperluan anda sendiri sebelum membeli dan merujuk kepada ulasan dan perbandingan pelbagai produk untuk membuat pilihan yang lebih termaklum.

See all articles