您的位置:首页 > 其它

避免刷新页面时重复提交表单数据

2016-07-30 15:05 591 查看
一般通过session、cookie,有些情况可以通过设置数据表的主键/唯一键来达到目的。


1、session 方式:


<?php
session_start();
$_SESSION['sess_token'] = sha1(mt_rand());
?>

<html>
<body>
<form action="submit.php" method="post">
<input type="hidden" name="sess_token" value="<?php echo $_SESSION['sess_token']; ?>" />
<input type="text" name="user" value="username" /><br />
<input type="submit" name="sub" value='submit' />
</form>
</body>
</html>


<?php
// session_start() 会创建新会话或者重用现有会话。 如果通过 GET 或者 POST 方式,或者使用 cookie 提交了会话 ID, 则会重用现有会话。
session_start();
if( ! empty($_POST['sub']) ) {
if ( ! empty($_SESSION['sess_token']) && ($_SESSION['sess_token']==$_POST['sess_token']) ) {
echo '<br />', 'found!';

// do something ...

$_SESSION['sess_token'] = null;
session_destroy();
} else {
echo '<br />', 'Second-Time Submit!';
}
}
?>


2、cookie方式:


<?php
$store_token = $token = sha1(mt_rand());
setcookie('token', $token, time()+3600, '/');
?>

<html>
<body>
<form action="submit.php" method="post">
<input type="hidden" name="token" value='<?php echo $token;?>' />
<input type="text" name="user" value="username" /><br />
<input type="submit" name="sub" value='submit' />
</form>
</body>
</html>


<?php
if(!empty($_POST['sub'])) {
if (!empty($_COOKIE['token']) && $_COOKIE['token']==$_POST['token']) {
echo '<br />', 'found!';

// do something ...

setcookie('token', null, -1);
} else {
echo '<br />', 'Second-Time Submit!';
}
}
?>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  session cookie 表单