PHP-表单令牌防止重复提交原理?

PHP-表单令牌防止重复提交原理


慕村225694
浏览 730回答 3
3回答

慕的地10843

最常用的方法就是利用token。即:1、在生成页面的时候生成一个token(随机字符串),并把它同时写入表单的某个hidden中,和服务端的session中。2、客户端提交表单到服务器时,比对表单中的token与session中的token是否一致。若不一致则认为是无效的请求。3、不管第2步的校验是否通过,token只要使用一次后就立即作废(即:从session中销毁)。同时token也可以关联时间信息,超时后也自动作废。这样,即便客户端重复提交,也只有第一次的请求能够成功。

小怪兽爱吃肉

可以在当前页面里设置一个变量,通过这个变量来确定是否已经提交了,如果提交过了就不再提交。示例代码:123456789101112131415<script&nbsp;language="javascript">&nbsp;var&nbsp;checkSubmitFlg&nbsp;=&nbsp;false;&nbsp;&nbsp;function&nbsp;checkSubmit(){&nbsp;if(checkSubmitFlg&nbsp;==true){&nbsp;&nbsp;&nbsp;return&nbsp;false;&nbsp;//当表单被提交过一次后checkSubmitFlg将变为true,根据判断将无法进行提交。&nbsp;}&nbsp;checkSubmitFlg&nbsp;==true;&nbsp;return&nbsp;true;&nbsp;}&nbsp;<&nbsp;/script&nbsp;>&nbsp;&nbsp;<&nbsp;form&nbsp;name="form1"&nbsp;method="post"&nbsp;onsubmit="return&nbsp;checkSubmit();">&nbsp;………..<&nbsp;/form>
打开App,查看更多内容
随时随地看视频慕课网APP