搜尋

首頁  >  問答  >  主體

javascript - 透過session會話,php產生的驗證碼點擊就可以刷新,為什麼?

透過php產生驗證碼,然後用img標籤輸出。

請問,為什麼有session_start()的話,onclick事件這樣寫,點選就會有刷新驗證碼的效果? (會出現新的驗證碼)
沒有session會話,點選無效。

html代碼

<img src="verifyCode.php" onclick="this.src='verifyCode.php'"/>

php

//省略验证码生成代码...

imagepng($image);//输出图片

session_start();//开始会话
PHP中文网PHP中文网2798 天前462

全部回覆(3)我來回復

  • 某草草

    某草草2017-05-16 13:01:41

    onclick="this.src='verifyCode.php?id='+Math_random()"/>
    這樣應該就行了。給圖片加個隨機數,每次產生的都不一樣 就能刷新了

    回覆
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-16 13:01:41

    這段程式碼session_start()是不是在圖片製作之前?
    如果是之前的話,一般製作畫布的時候需要注入驗證資訊到$_SESSION,可能因為沒有開啟session導致注入失敗,終止製作驗證碼圖片。

    回覆
    0
  • 给我你的怀抱

    给我你的怀抱2017-05-16 13:01:41

    利用session來校驗圖形驗證碼,一般的原理是先在session裡面儲存目前的驗證碼a,再透過a來產生圖形驗證碼,並回傳給客戶端。 客戶端透過輸入驗證碼a給伺服器,伺服器再根據目前session儲存的資料進行校驗。

    如果你用的是這種方法,又沒有啟用session,就沒辦法在session裡對驗證碼a進行儲存替換,當然會出錯。
    (備註:圖片的輸出和session的啟用無關)

    回覆
    0
  • 取消回覆