国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Maison développement back-end tutoriel php Une explication de la classe de code de vérification php Captcha

Une explication de la classe de code de vérification php Captcha

Jun 11, 2018 pm 04:44 PM
function session

<?php
/** Captcha 驗證碼類
*	Date: 	2011-02-19
*	Author:	fdipzone
*/
class Captcha{	//class start
	private $sname = &#39;&#39;;
	public function __construct($sname=&#39;&#39;){	// $sname captcha session name
		$this->sname?=?$sname==''??'m_captcha'?:?$sname;
	}
	/**?生成驗證碼圖片
	*?@param??int	$length?驗證碼長度
	*?@param??Array	$param??參數(shù)
	*?@return?IMG
	*/
	public?function?create($length=4,$param=array()){
		Header("Content-type:?image/PNG");
		$authnum?=?$this->random($length);	//生成驗證碼字符.
	
		$width	=?isset($param['width'])??$param['width']?:?13;		//文字寬度
		$height?=?isset($param['height'])??$param['height']?:?18;	//文字高度
		$pnum	=?isset($param['pnum'])??$param['pnum']?:?100;		//干擾象素個數(shù)
		$lnum	=?isset($param['lnum'])??$param['lnum']?:?2;		//干擾線條數(shù)
		$this->captcha_session($this->sname,$authnum);				//將隨機(jī)數(shù)寫入session
		$pw?=?$width*$length+10;
		$ph?=?$height+6;
				
		$im?=?imagecreate($pw,$ph);						//imagecreate()?新建圖像,大小為?x_size?和?y_size?的空白圖像。
		$black?=?ImageColorAllocate($im,?238,238,238);	//設(shè)置背景顏色
	
		$values?=?array(
				mt_rand(0,$pw),??mt_rand(0,$ph),
				mt_rand(0,$pw),??mt_rand(0,$ph),
				mt_rand(0,$pw),??mt_rand(0,$ph),
				mt_rand(0,$pw),??mt_rand(0,$ph),
				mt_rand(0,$pw),??mt_rand(0,$ph),
				mt_rand(0,$pw),??mt_rand(0,$ph)
		);
		imagefilledpolygon($im,?$values,?6,?ImageColorAllocate($im,?mt_rand(170,255),mt_rand(200,255),mt_rand(210,255)));	//設(shè)置干擾多邊形底圖
	
		/*?文字?*/
		for?($i?=?0;?$i?< strlen($authnum); $i++){
			$font = ImageColorAllocate($im, mt_rand(0,50),mt_rand(0,150),mt_rand(0,200));//設(shè)置文字顏色
			$x  = $i/$length * $pw + rand(1, 6);	//設(shè)置隨機(jī)X坐標(biāo)
			$y  = rand(1, $ph/3);					//設(shè)置隨機(jī)Y坐標(biāo)
			imagestring($im, mt_rand(4,6), $x, $y, substr($authnum,$i,1), $font); 
		}
		/* 加入干擾象素 */
		for($i=0; $i<$pnum; $i++){
			$dist = ImageColorAllocate($im, mt_rand(0,255),mt_rand(0,255),mt_rand(0,255)); //設(shè)置雜點顏色
			imagesetpixel($im, mt_rand(0,$pw) , mt_rand(0,$ph) , $dist); 
		} 
		/* 加入干擾線 */
		for($i=0; $i<$lnum; $i++){
			$dist = ImageColorAllocate($im, mt_rand(50,255),mt_rand(150,255),mt_rand(200,255)); //設(shè)置線顏色
			imageline($im,mt_rand(0,$pw),mt_rand(0,$ph),mt_rand(0,$pw),mt_rand(0,$ph),$dist);
		}
		ImagePNG($im);		//以 PNG 格式將圖像輸出到瀏覽器或文件
		ImageDestroy($im);	//銷毀一圖像
	}
	/** 檢查驗證碼
	* @param String $captcha	驗證碼
	* @param int 	$flag		驗證成功后 0:不清除session 1:清除session
	* @return boolean
	*/	
	public function check($captcha,$flag=1){
		if(empty($captcha)){
			return false;
		}else{
			if(strtoupper($captcha)==$this->captcha_session($this->sname)){	//檢測驗證碼
				if($flag==1){
					$this->captcha_session($this->sname,'');
				}
				return?true;
			}else{
				return?false;
			}
		}
	}
	
	/*?產(chǎn)生隨機(jī)數(shù)函數(shù)
	*?@param	int		$length	需要隨機(jī)生成的字符串?dāng)?shù)
	*?@return	String
	*/
	private?function?random($length){
		$hash?=?'';
		$chars?=?'ABCDEFGHIJKLMNPQRSTUVWXYZ23456789';
		$max?=?strlen($chars)?-?1;
		for($i?=?0;?$i?< $length; $i++) {
			$hash .= $chars[mt_rand(0, $max)];
		}
		return $hash;
	}
	/** 驗證碼session處理方法
	* @param	String	$name	captcha session name
	* @param	String	$value
	* @return	String
	*/
	private function captcha_session($name,$value=null){
		if(isset($value)){
			if($value!==&#39;&#39;){
				$_SESSION[$name] = $value;
			}else{
				unset($_SESSION[$name]);
			}
		}else{
			return isset($_SESSION[$name])? $_SESSION[$name] : &#39;&#39;;
		}
	}
}	// class end
?>

démo

<?
	session_start();
	require_once(&#39;Captcha.class.php&#39;);
	$obj = new Captcha($sname);		# 創(chuàng)建Captcha類對象
									# $sname為保存captcha的session name,可留空,留空則為&#39;m_captcha&#39;
	$obj->create($length,$param);	#?創(chuàng)建Captcha并輸出圖片
									#?$length為Captcha長度,可留空,默認(rèn)為4
									/*?$param?=?array(
											'width'?=>?13		captcha?字符寬度
											'height'?=>?18		captcha?字符高度
											'pnum'?=>?100		干擾點個數(shù)
											'lnum'?=>?2			干擾線條數(shù)
											)
											可留空
									*/
	$obj->check($captcha,$flag);	#?檢查用戶輸入的驗證碼是否正確,true?or?false
									#?$captcha為用戶輸入的驗證碼,必填
									#?$flag?可留空,默認(rèn)為1?
									#		1:當(dāng)驗證成功后自動清除captcha?session
									#		0:當(dāng)驗證成功后不清除captcha?session,用於ajax檢查
?>

Cet article explique le contenu pertinent sur la classe de code de vérification php Captcha. Pour plus de connaissances connexes, veuillez faire attention au site Web chinois de php.

Recommandations associées?:

Contenu lié au schéma d'information MySQL

Afficher la taille de la base de données MySQL, la taille de la table et l'heure de la dernière modification

Explication détaillée de Sublime Text 2

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefa?on, veuillez contacter admin@php.cn

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Article chaud

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Tutoriel PHP
1502
276
Comment définir le délai d'expiration de la session dans SpringBoot Session Comment définir le délai d'expiration de la session dans SpringBoot Session May 15, 2023 pm 02:37 PM

Le problème a été détecté dans le délai d'expiration de la session de production du projet Springboot. Le problème est décrit ci-dessous?: Dans l'environnement de test, la sortie de session a été configurée en modifiant le fichier application.yaml après avoir défini différentes heures pour vérifier la configuration de la sortie de session. est entré en vigueur, le délai d'expiration a été directement fixé à 8 heures pour la sortie. Arrivé en environnement de production. Cependant, j'ai re?u à midi des commentaires de clients indiquant que le délai d'expiration du projet était court. Si aucune opération n'est effectuée pendant une demi-heure, la session expirera et nécessitera des connexions répétées. Résolvez le problème de la gestion de l'environnement de développement?: le projet Springboot intègre Tomcat, donc la sortie de session configurée dans application.yaml dans le projet est efficace. Environnement de production?: la version de l'environnement de production est

Comment résoudre l'échec de la session Comment résoudre l'échec de la session Oct 18, 2023 pm 05:19 PM

L'échec de la session est généralement d? à l'expiration de la durée de vie de la session ou à l'arrêt du serveur. Les solutions : 1. Prolonger la durée de vie de la session ; 2. Utiliser le stockage persistant ; 3. Utiliser les cookies ; 4. Mettre à jour la session de manière asynchrone ; 5. Utiliser un middleware de gestion de session ;

Que dois-je faire si la session php dispara?t après l'actualisation?? Que dois-je faire si la session php dispara?t après l'actualisation?? Jan 18, 2023 pm 01:39 PM

Solution au problème de disparition de la session php après l'actualisation?: 1. Ouvrez la session via "session_start();"?; 2. écrivez toutes les configurations publiques dans un fichier php?; 3. Le nom de la variable ne peut pas être le même que l'indice du tableau?; 4. Dans Vérifiez simplement le chemin de stockage des données de session dans phpinfo et vérifiez si la session dans le répertoire de fichiers est enregistrée avec succès.

Comment résoudre le problème selon lequel le paramètre de délai d'expiration de la session Springboot2 n'est pas valide Comment résoudre le problème selon lequel le paramètre de délai d'expiration de la session Springboot2 n'est pas valide May 22, 2023 pm 01:49 PM

Problème?: Aujourd'hui, nous avons rencontré un problème de délai d'expiration dans notre projet et les modifications apportées au fichier application.properties de SpringBoot2 n'ont jamais pris effet. Solution?: Les propriétés server.* sont utilisées pour contr?ler le conteneur intégré utilisé par SpringBoot. SpringBoot créera une instance du conteneur de servlet en utilisant l'une des instances ServletWebServerFactory. Ces classes utilisent les propriétés server.* pour configurer le conteneur de servlets contr?lé (tomcat, jetty, etc.). Lorsque l'application est déployée en tant que fichier war sur une instance Tomcat, les propriétés server.* ne s'appliquent pas. Ils ne s'appliquent pas,

Que signifie fonction ? Que signifie fonction ? Aug 04, 2023 am 10:33 AM

Fonction signifie fonction. Il s'agit d'un bloc de code réutilisable avec des fonctions spécifiques. C'est l'un des composants de base d'un programme. Il peut accepter des paramètres d'entrée, effectuer des opérations spécifiques et renvoyer des résultats. code pour améliorer la réutilisabilité et la maintenabilité du code.

Solution au problème inter-domaines de session PHP Solution au problème inter-domaines de session PHP Oct 12, 2023 pm 03:00 PM

Solution au problème inter-domaines de PHPSession Dans le développement de la séparation front-end et back-end, les requêtes inter-domaines sont devenues la norme. Lorsque nous traitons de problèmes interdomaines, nous impliquons généralement l'utilisation et la gestion de sessions. Cependant, en raison des restrictions de la politique d'origine du navigateur, les sessions ne peuvent pas être partagées par défaut entre les domaines. Afin de résoudre ce problème, nous devons utiliser certaines techniques et méthodes pour réaliser le partage de sessions entre domaines. 1. L'utilisation la plus courante des cookies pour partager des sessions entre domaines

Quel est le délai d'expiration par défaut de la session PHP ? Quel est le délai d'expiration par défaut de la session PHP ? Nov 01, 2022 am 09:14 AM

Le délai d'expiration par défaut de la session PHP est de 1440 secondes, soit 24 minutes, ce qui signifie que si le client ne s'actualise pas pendant plus de 24 minutes, la session en cours expirera si l'utilisateur ferme le navigateur, la session se terminera et la session PHP expirera. La session n'existera plus.

Quelles sont les différences entre les cookies JavaScript et PHP ? Quelles sont les différences entre les cookies JavaScript et PHP ? Sep 02, 2023 pm 12:29 PM

Cookies JavaScript L'utilisation de cookies JavaScript constitue le moyen le plus efficace de mémoriser et de suivre les préférences, les achats, les commissions et autres informations. Informations nécessaires pour une meilleure expérience de visiteur ou des statistiques de site Web. PHPCookieCookies sont des fichiers texte stockés sur les ordinateurs clients et conservés à des fins de suivi. PHP prend en charge de manière transparente les cookies HTTP. Comment fonctionnent les cookies JavaScript ? Votre serveur envoie certaines données au navigateur de votre visiteur sous la forme d'un cookie. Les navigateurs peuvent accepter les cookies. S'il est présent, il sera stocké sur le disque dur du visiteur sous forme d'enregistrement en texte brut. Désormais, lorsqu'un visiteur atteint une autre page du site

See all articles