Token
就是令牌,最大的特點就是隨機性,不可預測。
Token一般用在兩個地方——防止表單重復提交、anti csrf攻擊(跨站點請求偽造)。
兩者在原理上都是通過session token
來實現的。當客戶端請求頁面時,服務器會生成一個隨機數Token,并且將Token放置到session當中,然后將Token發給客戶端(一般通過構造hidden表單)。下次客戶端提交請求時,Token會隨著表單一起提交到服務器端。
如果應用于“防止表單重復提交”,服務器端第一次驗證相同過后,會將session中的Token值更新下,若用戶重復提交,第二次的驗證判斷將失敗,因為用戶提交的表單中的Token沒變,但服務器端session中Token已經改變了。
表單在網頁中主要負責數據采集功能。一個表單有三個基本組成部分: 表單標簽:這里面包含了處理表單數據所用CGI程序的URL以及數據提交到服務器的方法。 表單域:包含了文本框、密碼框、隱藏域、多行文本框、復選框、單選框、下拉選擇框和文件上傳框等。 表單按鈕:包括提交按鈕、復位按鈕和一般按鈕;用于將數據傳送到服務器上的CGI腳本或者取消輸入,還可以用表單按鈕來控制其他定義了處理腳本的處理工作。
php表單加入Token防止重復提交
原理在于生成一個隨機字符串放在session里,提交表單后來驗證這個字符串,可以做到防止他人自己寫form來欺騙提交,重復提交或者雙擊提交。
簡單實現(僅供參考):
<?php /* * PHP簡單利用token防止表單重復提交 * 此處理方法純粹是為了給初學者參考 */ session_start(); function set_token() { $_SESSION['token'] = md5(microtime(true)); } function valid_token() { $return = $_REQUEST['token'] === $_SESSION['token'] ? true : false; set_token(); return $return; } //如果token為空則生成一個token if(!isset($_SESSION['token']) || $_SESSION['token']=='') { set_token(); } if(isset($_POST['test'])){ if(!valid_token()){ echo "token error"; }else{ echo '成功提交,Value:'.$_POST['test']; } } ?> <form method="post" action=""> <input type="hidden" name="token" value="<?php echo $_SESSION['token']?>"> <input type="text" name="test" value="Default"> <input type="submit" value="提交" /> </form>
以上就是php防止表單重復提交的方法的詳細內容,更多請關注億速云其它相關文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。