我有以下代码:
<?php
...
?>
<script>
....
</script>
<html>
...
</html>
显示 HTML 表单后,JavaScript 应该验证,然后 PHP 应该保存在数据库中并给出确认消息.. 但是发生的是,在执行 PHP 并回显成功消息后,HTML 表单也显示如下消息.. 什么我可以做些什么来避免这种情况?
如果表单提交成功,我更喜欢设置一个变量。类似于以下内容:
<?php
$success = false;
if (isset($_POST['submit'])) {
// process form submission
// if submission validates; set $success to true
}
?>
<!DOCTYPE html>
<html>
<head>
…
</head>
<body>
<?php if ($success): ?>
<p>Thank you for your submission!</p>
<?php else: ?>
<form action="" method="post">
…
</form>
<?php endif; ?>
</body>
</html>
您可以在处理数据后结束脚本exit();
(请参阅文档)
就像@Shomz 所说,您可以将 HTML 输出包装在 if 语句中,以防止在处理表单数据后打印它。
将 PHP 放在不同的文件中(您可以包含 HTML 文件)
return;
die();
exit();
使用ob_start()
和 类似的功能来缓冲 HTML 并_clean
在不需要时将其刷新到必杀技。
提交到不同的文件(与第一点几乎相同)。
在php.ini中使用 prepend 在脚本之前启动 ob ,并在 php.ini 中附加以在某些情况下终止输出(可能使用isset()
on 变量来检查是否有提交或只是$_POST
/ $_GET
)。
您可能还想在这里查看其他人已经询问过 php 的 PRG 模式:Simple Post-Redirect-Get code example
if(isset($_POST['name'])){
//your insert query
//your thanks message
}
else{
// Your html form
}
只需使用标志变量:-
if(isset($some_var))
{
// do something
}
else{
// show html form
}
您可以使用表单的“操作”将帖子发送到另一个有确认消息的文件。
或者你不能if(!$_POST)
在你的 html 之前加上一个条件