尽管使用了Onsubmit确认,HTML表单仍然设置PHP$_POST[]

HTML form still sets PHP $_POST[] despite using Onsubmit confirmation

本文关键字:PHP 设置 POST 表单 Onsubmit HTML 确认      更新时间:2024-01-22

HTML-中

<form id="anID" method="post" onsubmit="confirm('Want to make this change?')" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>
    <input type="text" name="amount">
    <input type="submit" name="add" value="Add Amount">
</form>

PHP-中

if (isset($_POST['add'])) { Add amount to database }

我的问题是,尽管onsubmit对话框出现时按了"取消",POST表单仍然设置好,PHPIf()语句中的所有代码仍然提交,但我不希望这样。

有没有办法在激活isset()之前确认提交?

最好是一个简单的解决方案,不需要单独的JS函数。

您需要return来自confirm()的响应以阻止表单提交(如果它返回false。返回true将允许表单提交):

onsubmit="return confirm('Want to make this change?')"

首先,您还没有关闭表单语句。

最重要的是,您必须设置从对话框到表单的返回。这是正确的行:

<form id="anID" method="post" onsubmit="return  confirm('Want to make this change?')" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">