透過php產(chǎn)生驗證碼,然後用img標籤輸出。
請問,為什麼有session_start()的話,onclick事件這樣寫,點選就會有刷新驗證碼的效果? (會出現(xiàn)新的驗證碼)
沒有session會話,點選無效。
html代碼
<img src="verifyCode.php" onclick="this.src='verifyCode.php'"/>
php
//省略驗證碼生成代碼...
imagepng($image);//輸出圖片
session_start();//開始會話
認證0級講師
onclick="this.src='verifyCode.php?id='+Math_random()"/>
這樣應該就行了。給圖片加個隨機數(shù),每次產(chǎn)生的都不一樣 就能刷新了
這段程式碼session_start()是不是在圖片製作之前?
如果是之前的話,一般製作畫布的時候需要注入驗證資訊到$_SESSION,可能因為沒有開啟session導致注入失敗,終止製作驗證碼圖片。
利用session來校驗圖形驗證碼,一般的原理是先在session裡面儲存目前的驗證碼a,再透過a來產(chǎn)生圖形驗證碼,並回傳給客戶端。 客戶端透過輸入驗證碼a給伺服器,伺服器再根據(jù)目前session儲存的資料進行校驗。
如果你用的是這種方法,又沒有啟用session,就沒辦法在session裡對驗證碼a進行儲存替換,當然會出錯。
(備註:圖片的輸出和session的啟用無關(guān))