美工统筹SEO,为企业电子商务营销助力!
PHP避免post反复提交数据的简略例子
一佰互联网站建造(www.taishanly.com) 宣布日期 2020-04-29 09:01:10 阅读数: 120
在某帝国口试的时辰题目了这个题: 怎样处置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();
?>
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>post</title>
</head>
<body>
<form action="post.php?action=save" method="post">
<ul>
<li>
<input type="hidden" name="auth" value="<?php echo $auth;?>">
<input type="text" name="userName">
</li>
<li>
<input type="password" name="userpass">
</li>
<li>
<input type="submit" value="走起">
</li>
<li>
<?php echo time(); ?>
</li>
</ul>
</form>
</body>
</html>