提交后,PHP 表单再次出现在下面


PHP form appears below again after submitting

我有一个注册表单注册.php它提交给自己,如果所有输入都有效,它包括确认.php,我必须将数据保存到表中。

看起来像这样——

注册.php

  <?php
if ($_SERVER["REQUEST_METHOD"] == "POST")
{
    include('validate.php');
    if($valid) {
        require_once ('getDBconnection.php');        
        include ('confirm.php'); 
    }
}
function test_input($data) {
         $data = trim($data);
         $data = stripslashes($data);
         $data = htmlspecialchars($data);
         return $data;
    }
?>
<!DOCTYPE html >
<html>
// all html code with banner and navigation and form elements.
因此,当我在确认

文本后在整个页面下方收到注册确认时,我会看到带有所有横幅和导航以及所有 DIV 内容和表单的表单。

是因为我要确认吗.php?

如果有什么问题,请告诉我,我刚刚开始学习 php。

尝试在indlude确认后添加退出.php以停止使用菜单等执行整个站点。

if($valid) {
    require_once ('getDBconnection.php');        
    include ('confirm.php'); 
    exit();
}

您应该重定向以确认.php,而不是包含它

<?php
if ($_SERVER["REQUEST_METHOD"] == "POST")
{
    include('validate.php');
    if($valid) {
        header('Location: confirm.php'); 
    }
}
function test_input($data) {
         $data = trim($data);
         $data = stripslashes($data);
         $data = htmlspecialchars($data);
         return $data;
    }
?>

<!DOCTYPE html >
<html>
// all html code with banner and navigation and form elements.

编辑

当然,这只有在您尚未向浏览器输出任何内容时才有效(IE:echo 'Please fill out the form correctly';

您可以重定向页面进行确认.php也可以重定向 如果要包含确认.php而不是你需要在包含('确认.php')行之后放置 exit() 或 die();

<?php
if ($_SERVER["REQUEST_METHOD"] == "POST")
{
    include('validate.php');
    if($valid) {
        require_once ('getDBconnection.php');        
        include ('confirm.php'); 
        exit(); //or you can also use die();
    }
}
function test_input($data) {
         $data = trim($data);
         $data = stripslashes($data);
         $data = htmlspecialchars($data);
         return $data;
    }
?>

这是因为无论是否包含确认.php,enroll.php都会运行到文件的末尾。

您最有可能提交表单以确认.php,然后重定向用户确认.php