<body>
<?php
if(isset($_POST['vendor_add_submit'])){
//INSERT INTO DB
unset( $_POST['vendor_add_submit'] );
}
?>
<form method="post" action="<?php echo $_SERVER['PHP_SELF'] ?>" >
<label>Email</label>
<input type="text" name="vendor_email" value="" />
<input type="submit" name="vendor_add_submit" value="SAVE" />
</form>
</body>
unset( $_POST['vendor_add_submit'] );
用于防止在页面刷新时多次插入数据库。在取消设置之前和之后,我用print_r($_POST['vendor_add_submit'] )
进行了测试,发现unset()
函数不起作用。
如何实现unset函数plz的目的?
Unset不会阻止刷新将POSTed数据回放到脚本。unset函数在该脚本的剩余执行中消除了它,但刷新是新的执行。
插入后,您可以简单地将浏览器重定向到条目页面,这样后续刷新就安全了。
//INSERT INTO DB
//...
header('Location: samepage.php');
exit();
我相信还有其他方法可以做到这一点。
您的方法无法工作,您只需要编辑PHP脚本收到的数据。如果用户刷新浏览器,它将再次提交相同的数据,PHP将用浏览器发送的数据填充新的$_POST
。
如果要停止刷新并重新提交数据,请使用POST-REDECT-GET模式。
$_POST值将仅在服务器端删除,这意味着在该请求中,PHP将无法看到或使用它(您删除了它(。
但您在页面的HTML上呈现"提交"按钮,因此每次有人访问页面并提交表单时,他们都会再次提交值。您将在当前请求中再次为PHP删除它。因此,每个请求都会将数据插入数据库。
您可能希望查看而不是检查记录是否已经存在(或者,如果用户已经存在,则不确定您想要什么(,然后使用header('Location: otherpage.php');
将它们从页面重定向出去。
希望能有所帮助。。。