PHP防止post重复提交数据的简单例子
在某帝国面试的时候问题了这个题:怎么处理post提交重复的问题,后来跟@暖阳交流,他说记录时间,我没有明白,我想的是用session在表单页面记录下,然后提交页面判断,如果相等则视为成功,并清空session,但有个问题是如果表单页面是html的呢,乍办?要不调个php验证的页面?类似验证码的功能.还有的说用header头设置过期时间...但没试.以下是我php写的,经测试可用.
<?php //开启session session_start();
//如果有提交标识 if(isset($_GET['action'])&&$_GET['action']==='save'){
//如果有session且跟传过来的值一样才算提交 if(isset($_SESSION['__open_auth'])&&isset($_POST['auth'])&&$_SESSION['__open_auth']==$_POST['auth']){ print_r($_POST); $_SESSION['__open_auth']=null;//清空 }else{
//走起 header("location:post.php"); } exit(); }
//授权 $auth=$_SESSION['__open_auth']=time();
?> <!doctypehtml> <html> <head> <metacharset="UTF-8"> <title>post</title> </head> <body> <formaction="post.php?action=save"method="post"> <ul> <li> <inputtype="hidden"name="auth"value="<?phpecho$auth;?>"> <inputtype="text"name="userName"> </li> <li> <inputtype="password"name="userpass"> </li> <li> <inputtype="submit"value="走起"> </li> <li> <?phpechotime();?> </li> </ul> </form> </body> </html>