php中驗證碼不同步是因為頁面載入login.php頁面時,圖片的載入跟其他標籤載入是異步的,所以其他標籤資訊先加載,而後才會去載入圖片。
本文操作環境:windows7系統、PHP7.1版、DELL G3電腦
#php中驗證碼不同步怎麼辦?
完美解決php驗證碼session不同步的問題
#各位搞開發的人都經歷過被怪現象折磨的滋味,怎麼說呢?想找原因找不出來,想解決又解決不了,接下來我們就來談談php驗證碼這個怪僻。 。
先給大家上個圖,相信你們也似曾相識。 。
你會發現兩個值竟然不一樣,不一樣咋驗證? ? ? ? ?
於是乎,我就在網路上找到了原因:頁面載入login.php頁面時,圖片的載入跟其他標籤載入是異步的,所以其他標籤資訊先加載,而後才會去載入src(圖片),不同步導致「驗證碼」也不同步。
知道了原因,作為菜鳥的我看了別人寫的解決方案後仍然無從下手。 。
終於,在一個偶然的機會,我從一個專案中找到答案。 。
其實,解決方法很簡單,根本不用理會顯示的值相同不相同,舉例。 。
login.php 登入頁面
<form action="login_check.php" method="post"> 验证码: <input name="checkcode" type="text" /><img src="yan.php" alt="看不清?点击更换" style="max-width:90%" onClick="this.src=this.src+'?'" />//yan.php是生成验证码的页面。 </form>
login_check.php 驗證頁面
<?php session_start();//开启session $checkcode= strtolower($_POST["checkcode"]);//获取验证码文本框的值 echo $checkcode;//输出验证码文本框的值 echo $_SESSION['VerifyCode']//输出yan.php输出的值 ?>
提交後,你會驚訝的發現,如果我在login.php輸入與產生驗證碼的值一樣的話,那麼在login_check.php輸出的兩個值是除了大小寫不一樣,字母是一樣的。
當然大小寫的問題,我們都能解決。
講到這裡,我相信,不同步的問題就算解決了
當然,我知道有些最求完美的人喜歡用ajax,根據個人所好,屏閃來閃去,看起來也不太爽,不過,用ajax的話,不要提交到本頁面,不然驗證不了,通過一個外部文件進行異步驗證是沒有問題的。
推薦學習:《PHP影片教學》
以上是php中 驗證碼不同步怎麼辦的詳細內容。更多資訊請關注PHP中文網其他相關文章!