Rumah pembangunan bahagian belakang tutorial php PHP简略验证码类:字母+数字 字体随机扭曲

PHP简略验证码类:字母+数字 字体随机扭曲

Jun 13, 2016 pm 01:09 PM
amp exists function gt this

PHP简单验证码类:字母+数字 字体随机扭曲

      现在各式各样的验证码,个人认为验证码是让用户看的,所以简单就好。什么干扰码,倾斜,复杂的背景 都是对用户的一种折磨。

      看了一些比较大的体验比较好的网站验证码都较为简单,没有复杂的背景,没有干扰码,没有背景。

      有什么地方写的不好的欢迎大家批评,指点。

<?php if (!defined('IS_INITPHP')) exit('Access Denied!');
/*********************************************************************************
 * InitPHP 2.0 国产PHP开发框架  扩展类库-验证码
*-------------------------------------------
* 版权所有: CopyRight By initphp.com
* 您可以自由使用该源码,但是在使用过程中,请保留作者信息。尊重他人劳动成果就是尊重自己
*-------------------------------------------
* $Author:liuxinming
* $Dtime:2012-10-09
***********************************************************************************/
class seccodeInit{
	private $width;
	private $height;
	private $type=0;// 0 字母+数字验证码
	private $time=3000;//验证码过期时间(s)
	private $color=null;//验证码字体颜色
	private $im;
	private $length=4;//验证码长度
	private $warping;//随机扭曲
	
	/**
	 * 获取随机数值
	 * @return string
	 */
	private function get_random_val() {
		$i=0;
		while($i<$this->length)
		{
			mt_srand((double)microtime()*1000000);
			$randnum=mt_rand(50,90);
			if(!in_array($randnum,array(58,59,60,61,62,63,64,73,79)))
			{
				$authnum=$authnum.chr($randnum);
				$i++;
			}
		}
		session_start();
		$time=time();
		$checkcode=md5(md5($authnum.'initphpYzmsy'.$time));
		$key=$time.','.$checkcode.','.authnum;
		$_SESSION['initphp_code'] = $key;
		return $authnum;
	}
	
	/**
	 * 获取验证码图片
	 * @param $width 宽
	 * @param $height 高
	 * @param $warping 字体随机扭曲开关 0=关,1=开
	 * @return string
	 */
	public function getcode($width=140,$height=40,$warping=0){
		$this->width=$width;
		$this->height=$height;
		$this->warping=$warping;
		if($this->typeimage();
		}
	}
	/**
	 * 生成图片验证码
	 * @return string
	 */
	public function image(){
		$this->im=imagecreate($this->width, $this->height);//设置图片背景大小
		imagecolorallocate($this->im, 243, 251, 254);// 设置背景  
		$this->color=imagecolorallocate($this->im, mt_rand(1,120), mt_rand(1,120), mt_rand(1,120));// 验证码字体随机颜色
		$ttfPath = dirname(__FILE__) . '/font/';//字体目录
		$dirs = opendir($ttfPath);
		$seccodettf = array();
		while($entry = readdir($dirs)) {
			if($entry != '.' && $entry != '..' && in_array(strtolower(addslashes(strtolower(substr(strrchr($entry, '.'), 1, 10)))), array('ttf', 'ttc'))) {
				
				$seccodettf[] = $ttfPath.$entry;
			}
		}
		$ttf = $seccodettf[array_rand($seccodettf)];//随机一种字体
		$size = $this->type ? $this->width / 7 : $this->width / 6;//字体大小
		imagettftext($this->im,$size, 0, 10, $size*1.2, $this->color, $ttf, $this->get_random_val());//设置验证码字符
		if($this->warping){//随机扭曲
			$this->setWarping();
		}
		if(function_exists("imagepng"))
		{
			header ("Content-type: image/png");
			$code=imagepng($this->im);
		}elseif (function_exists("imagejpeg"))
		{
			header ("Content-type: image/jpeg");
			$code=imagejpeg($this->im);
		}elseif (function_exists("imagegif")) 
		{
			header("Content-type: image/gif");
			$code=imagegif($this->im);
		}
		imagedestroy($this->im);
		return $code;
	}
	
	/**
	 * 检查验证码
	 * @param $code
	 * @return bool
	 */
	public function checkCode($code) {
		session_start();
		$secode=explode(',', $_SESSION['initphp_code']);
		$time=time();
		//检查时间是否过期
		if($secode[0]>$time||$time-$secode[0]>$this->time)
		{
			return false;
		}
		//验证码密钥 双md5 后是否一致
		if($secode[1]md5(md5($code.'initphpYzmsy'.$secode[0]))){
			return false;
		}
		//检查验证码字符串是否一致
		if($code||$code$secode[2])
		{
			return false;
		}
		return true;
	}
	
	/*随机扭曲*/
	public function setWarping(){
		$rgb=array();
		$direct=rand(0,1);
		$width = imagesx($this->im);
		$height = imagesy($this->im);
		$level=$width /20;
		for($j = 0;$j im, $i , $j);
				}
			for($i = 0;$i im, $i + $r , $j , $rgb[$i]);
				}
		}
	}
}
?>
Salin selepas log masuk

效果:


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

Apakah maksud fungsi? Apakah maksud fungsi? Aug 04, 2023 am 10:33 AM

Fungsi bermaksud fungsi. Ia adalah blok kod yang boleh digunakan semula dengan fungsi tertentu Ia boleh menerima parameter input, melakukan operasi tertentu, dan mengembalikan hasil daripada blok yang boleh digunakan semula. kod untuk meningkatkan kebolehgunaan semula dan kebolehselenggaraan kod.

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

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:

Apakah syiling AMP? Apakah syiling AMP? Feb 24, 2024 pm 09:16 PM

Apakah itu AMP Coin? Token AMP telah dicipta oleh pasukan Synereo pada tahun 2015 sebagai mata wang dagangan utama platform Synereo. Token AMP bertujuan untuk memberikan pengguna pengalaman ekonomi digital yang lebih baik melalui pelbagai fungsi dan kegunaan. Tujuan Token AMP Token AMP mempunyai pelbagai peranan dan fungsi dalam platform Synereo. Pertama, sebagai sebahagian daripada sistem ganjaran mata wang kripto platform, pengguna dapat memperoleh ganjaran AMP dengan berkongsi dan mempromosikan kandungan, mekanisme yang menggalakkan pengguna untuk mengambil bahagian secara lebih aktif dalam aktiviti platform. Token AMP juga boleh digunakan untuk mempromosikan dan mengedarkan kandungan pada platform Synereo. Pengguna boleh meningkatkan keterlihatan kandungan mereka pada platform dengan menggunakan token AMP untuk menarik lebih ramai penonton melihat dan berkongsi

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

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

Apakah tujuan fungsi 'enumerate()' dalam Python? Apakah tujuan fungsi 'enumerate()' dalam Python? Sep 01, 2023 am 11:29 AM

Dalam artikel ini, kita akan belajar tentang fungsi enumerate() dan tujuan fungsi "enumerate()" dalam Python. Apakah fungsi enumerate()? Fungsi enumerate() Python menerima pengumpulan data sebagai parameter dan mengembalikan objek penghitungan. Objek penghitungan dikembalikan sebagai pasangan nilai kunci. Kuncinya ialah indeks yang sepadan dengan setiap item, dan nilainya ialah item. Syntax enumerate(iterable,start) Parameters iterable - Yang diluluskan dalam pengumpulan data boleh dikembalikan sebagai objek enumeration, dipanggil iterablestart - Seperti namanya, indeks permulaan objek enumeration ditakrifkan oleh permulaan. kalau kita abaikan

Penjelasan terperinci tentang peranan dan fungsi jadual MySQL.proc Penjelasan terperinci tentang peranan dan fungsi jadual MySQL.proc Mar 16, 2024 am 09:03 AM

Penjelasan terperinci tentang peranan dan fungsi jadual MySQL.proc ialah sistem pengurusan pangkalan data relasi yang popular Apabila pembangun menggunakan MySQL, mereka sering melibatkan penciptaan dan pengurusan prosedur tersimpan (StoredProcedure). Jadual MySQL.proc ialah jadual sistem yang sangat penting Ia menyimpan maklumat yang berkaitan dengan semua prosedur tersimpan dalam pangkalan data, termasuk nama, definisi, parameter, dsb. prosedur tersimpan. Dalam artikel ini, kami akan menerangkan secara terperinci peranan dan kefungsian jadual MySQL.proc

See all articles