??摘要:在使用GD庫做驗證碼的過程中,使用firefox調試,發現瀏覽器顯示的驗證碼圖片與firebug響應的驗證碼圖片不同,firebug響應的驗證碼圖片的字符串與session裡面存的字串相同,網路上查找以後,找到思路,有可能是firefox的瀏覽器顯示的請求與firebug的請求不是一個請求,故做下面的驗證,記錄這個問題。
??為了更針對這個問題做出驗證,將原始程式碼進行了精簡和修改,更適合驗證這個問題。好,先上程式碼。
<code><span><span><?php</span> header(<span>"content-type:image/png"</span>); session_start(); <span>if</span> (<span>isset</span>(<span>$_SESSION</span>[<span>'index'</span>])) { <span>$_SESSION</span>[<span>'index'</span>] += <span>1</span>; }<span>else</span>{ <span>$_SESSION</span>[<span>'index'</span>] = <span>1</span>; } <span>$width</span> = <span>80</span>; <span>$height</span> = <span>20</span>; <span>$vCodeString</span> = <span>""</span>; <span>$vCodeString</span> = <span>"{$_SESSION['index']}"</span>; <span>$_SESSION</span>[<span>'vcode'</span>] = <span>$vCodeString</span>; <span>$image</span> = imagecreate(<span>$width</span>,<span>$height</span>); <span>$background</span> = imagecolorallocate(<span>$image</span>,<span>255</span>,<span>255</span>,<span>255</span>); <span>$fontcolor</span> = imagecolorallocate(<span>$image</span>, <span>0</span>, <span>0</span>, <span>0</span>); imagestring(<span>$image</span>, <span>5</span>, <span>0</span>, <span>0</span>, <span>$vCodeString</span>, <span>$fontcolor</span>); imagepng(<span>$image</span>); imagedestroy(<span>$image</span>); <span>?></span></span></code>
??程式碼很簡單,這裡就不做解釋了。
下面把在firefox上(沒有開啟firebug)首次訪問和刷新後的結果貼上:
首次訪問:
在驗證碼圖片上右鍵另存為,儲存到本機是:
然後SESSION 裡面存的也是2
刷新後:
??下面把在firefox上(開啟firebug)首次訪問和刷新後的結果是(不貼圖片了,太麻煩):
首次訪問:1
圖片上右鍵另存為:3
firebug裡面回應的為:3
SESSION裡面是:3
總結:在沒有開啟firebug插件的時候,firefox頁面請求一次(是兩次中的第一次),伺服器端的這個PHP檔案實際上是被請求了兩次。在開啟firebug外掛的時候,firefox頁面要求第一次,不知道哪裡請求了第二次,firebug請求了第三次。
在chrome瀏覽器下均是訪問了一次,頁面顯示的圖片上的字符是SESSION中存儲的字符,運行是正常的
最後的總結:網上查說是出現這種問題可能是firefox的一個bug,我想應該不是這麼簡單的問題把,記錄在此,希望以後能查清楚這是什麼原因! ! !
完
').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i ').text(i)); }; $numbering.fadeIn(1700); }); });以上就介紹了firefox php 驗證碼圖片 多次請求問題 待解決,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。