首頁 後端開發 php教程 解决php session验证码不现实的有关问题

解决php session验证码不现实的有关问题

Jun 13, 2016 pm 12:16 PM
function quot rand

解决php session验证码不现实的问题

本人一开始图片老显示不出来,显示的是一个裂了的图片,经查询发现可能由以下几种可能造成

1)在header("Content-type:image/png");前加如下一段代码

ini_set('display_errors', 'Off');
登入後複製
本人就是由上面的问题造成。

附上生成验证码的图片的代码

<?php ini_set(&#39;display_errors&#39;, &#39;Off&#39;);	header("Content-type:image/png");	session_start();		$_SESSION[&#39;code&#39;] = &#39;null&#39;;			//初始化	$width = &#39;58&#39;;	$height = &#39;22&#39;;	//$code = &#39;&#39;;	$tmptext =&#39;&#39;;	$bordercolor= &#39;&#39;;	for($i=0;$i<4;$i++)	{		$tmptext = rand(0,9);		$code .= $tmptext;	}	$_SESSION[&#39;code&#39;] = $code;	//以下三句诗让浏览器不缓存	@header("Expires:-1");	@header("Cache-Control:no-store,private,posc-check=0,pre-check=0,max-age=0",FALSE);	@header("Pragma:no-cache");		if(function_exists(&#39;imagecreate&#39;) && function_exists(&#39;imagecolorset&#39;) && function_exists(&#39;imagecopyresized&#39;)			&& function_exists(&#39;imagecolorallocate&#39;) && function_exists(&#39;imagesetpixel&#39;) 			&& function_exists(&#39;imagechar&#39;)  &&  function_exists(&#39;imagecreatefromgif&#39;)			&& function_exists(&#39;imagepng&#39;)		)	{		$im = imagecreate($width, $height);		$backgroundcolor = imagecolorallocate($im, 255, 255, 255);		$numorder = array(1,2,3,4);		/**shuffle将数组打乱*/		shuffle($numorder);		/**array_flip返回一个被反转的数组,键值被处理值*/		$numorder = array_flip($numorder);		$x=&#39;&#39;;		$y=&#39;&#39;;		$text_color = &#39;&#39;;		for($i=1;$i<=4;$i++)		{			$x = $numorder[$i] * 13 + mt_rand(0,4) -2;			$y = mt_rand(0,3);			$text_color = imagecolorallocate($im, mt_rand(50,255), mt_rand(50,255), mt_rand(50,255));			/**将字符画在$im图中,5表示字体的大小 $x+5 */			imagechar($im, 5, $x+5, $y+3, $code[$numorder[$i]], $text_color);		}				$linenums = mt_rand(10,32);		for($i=0;$i<=$linenums;$i++)		{			$linecolor = imagecolorallocate($im, 255, mt_rand(0,255), mt_rand(0,255));			$linex = mt_rand(0,255);			$liney = mt_rand(0,255);			imageline($im, $linex, $liney, $linex+mt_rand(0,4)-2, $liney+mt_rand(0,4)-2,  $linecolor);		}				for($i=0;$i<40;$i++)		{			$pointcolor = imagecolorallocate($im, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255));			imagesetpixel($im, mt_rand(0,$width), mt_rand(0,$height), $pointcolor);		}				$bordercolor = imagecolorallocate($im, 150, 150, 150);		imagerectangle($im, 0, 0, $width-1, $height-1, $bordercolor);				imagepng($im);		imagedestroy($im);	}?>
登入後複製



2)变量没初始化


3)在header("Content-type:image/png");前加入

ob_clean();



第二三中方法不确保可以解决问题,仅供参考。

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

如何解決 golang 中的 'undefined: rand.Seed” 錯誤? 如何解決 golang 中的 'undefined: rand.Seed” 錯誤? Jun 25, 2023 am 08:34 AM

在使用Golang進行開發或學習過程中,我們可能會遇到undefined:rand.Seed的錯誤提示。這個錯誤通常會在需要使用隨機數產生器時出現,因為在Golang中需要先設定一個隨機數種子,才能使用rand套件中的函數。本篇文章將介紹如何解決這種錯誤。 1.引入math/rand包首先,我們需要在程式碼中引入math/rand包。在

function是什麼意思 function是什麼意思 Aug 04, 2023 am 10:33 AM

function是函數的意思,是一段具有特定功能的可重複使用的程式碼區塊,是程式的基本組成單元之一,可以接受輸入參數,執行特定的操作,並傳回結果,其目的是封裝一段可重複使用的程式碼,提高程式碼的可重複使用性和可維護性。

'enumerate()'函數在Python中的用途是什麼? 'enumerate()'函數在Python中的用途是什麼? Sep 01, 2023 am 11:29 AM

在本文中,我們將了解enumerate()函數以及Python中「enumerate()」函數的用途。什麼是enumerate()函數? Python的enumerate()函數接受資料集合作為參數並傳回一個枚舉物件。枚舉物件以鍵值對的形式傳回。 key是每個item對應的索引,value是items。語法enumerate(iterable,start)參數iterable-傳入的資料集合可以作為枚舉物件傳回,稱為iterablestart-顧名思義,枚舉物件的起始索引由start定義。如果我們忽

MySQL.proc表的作用與功能詳解 MySQL.proc表的作用與功能詳解 Mar 16, 2024 am 09:03 AM

MySQL.proc表的功能與功能詳解MySQL是一種流行的關係型資料庫管理系統,開發者在使用MySQL時常常會涉及到預存程序(StoredProcedure)的建立與管理。而MySQL.proc表則是一個非常重要的系統表,它儲存了資料庫中所有的預存程序的相關信息,包括預存程序的名稱、定義、參數等。在本文中,我們將詳細解釋MySQL.proc表的作用與功能

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

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

php rand函數產生相同隨機數怎麼解決 php rand函數產生相同隨機數怎麼解決 Mar 23, 2023 am 09:17 AM

rand()函數在每次呼叫時使用相同的初始種子(seeds)。預設的初始種子是從作業系統的時間獲得的,但是它只有微秒的精確度。也就是說,在極短的時間內,許多rand()函數呼叫都會使用相同的初始種子,導致相同的隨機數產生。那麼,如何解決這個問題呢?

如何在 Golang 平行處理中同步隨機數產生? 如何在 Golang 平行處理中同步隨機數產生? Jun 03, 2024 pm 02:53 PM

在Go並發程式設計中同步隨機數產生:使用互斥鎖(sync.Mutex)控制對rand.Rand隨機數產生器的存取。每個goroutine在產生隨機數前取得互斥鎖,並在產生後釋放互斥鎖。這確保了同一時間只有一個goroutine可以存取隨機數產生器,消除了資料爭用。

Vue.use函數的用法與作用 Vue.use函數的用法與作用 Jul 24, 2023 pm 06:09 PM

Vue.use函數的用法和作用Vue是一款流行的前端框架,它提供了許多有用的功能和功能。其中之一就是Vue.use函數,它可以讓我們在Vue應用中使用插件。本文將介紹Vue.use函數的用法和作用,並且提供一些程式碼範例。 Vue.use函數的基本用法非常簡單,只需在Vue實例化之前呼叫它,並傳入要使用的插件作為參數。以下是一個簡單的範例://引入並使用插件

See all articles