取消设置表单提交按钮


unset form submit button

<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');将它们从页面重定向出去。

希望能有所帮助。。。