84669 人學習
152542 人學習
20005 人學習
5487 人學習
7821 人學習
359900 人學習
3350 人學習
180660 人學習
48569 人學習
18603 人學習
40936 人學習
1549 人學習
1183 人學習
32909 人學習
透過php產生驗證碼,然後用img標籤輸出。
請問,為什麼有session_start()的話,onclick事件這樣寫,點選就會有刷新驗證碼的效果? (會出現新的驗證碼)沒有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()"/>這樣應該就行了。給圖片加個隨機數,每次產生的都不一樣 就能刷新了
這段程式碼session_start()是不是在圖片製作之前? 如果是之前的話,一般製作畫布的時候需要注入驗證資訊到$_SESSION,可能因為沒有開啟session導致注入失敗,終止製作驗證碼圖片。
利用session來校驗圖形驗證碼,一般的原理是先在session裡面儲存目前的驗證碼a,再透過a來產生圖形驗證碼,並回傳給客戶端。 客戶端透過輸入驗證碼a給伺服器,伺服器再根據目前session儲存的資料進行校驗。
如果你用的是這種方法,又沒有啟用session,就沒辦法在session裡對驗證碼a進行儲存替換,當然會出錯。 (備註:圖片的輸出和session的啟用無關)
onclick="this.src='verifyCode.php?id='+Math_random()"/>
這樣應該就行了。給圖片加個隨機數,每次產生的都不一樣 就能刷新了
這段程式碼session_start()是不是在圖片製作之前?
如果是之前的話,一般製作畫布的時候需要注入驗證資訊到$_SESSION,可能因為沒有開啟session導致注入失敗,終止製作驗證碼圖片。
利用session來校驗圖形驗證碼,一般的原理是先在session裡面儲存目前的驗證碼a,再透過a來產生圖形驗證碼,並回傳給客戶端。 客戶端透過輸入驗證碼a給伺服器,伺服器再根據目前session儲存的資料進行校驗。
如果你用的是這種方法,又沒有啟用session,就沒辦法在session裡對驗證碼a進行儲存替換,當然會出錯。
(備註:圖片的輸出和session的啟用無關)