首页 > 解决方案 > 在 php 文件之间发送 $_POST 数据

问题描述

我有一个 HTML 表单,它的 action 元素是指 php 本身。单击提交按钮后,php 被重新加载,我验证输入“search”不为空(如果为空,则没有任何反应,如果不是,则加载pag1.php)。

问题是,如果我使用header()函数加载pag1.php文件,我无法向它发送 $_POST 数据。

这是我的代码:

<?php
    if($_SERVER['REQUEST_METHOD'] == 'POST' ){
        $uncomplete;

        foreach($_POST as $val){
            if(empty($val)){
                $uncomplete = true;
                break;
            }
        }

        if(!$uncomplete){
            header("Location: pag1.php");
        }
    }
?>

<!DOCTYPE html>
<html>
    <head>
        <title>Form</title>     
        <meta charset = "UTF-8">
    </head>
    <body>
        <form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="post">

            <input type="text" name="search"><br><br>

            <input type="submit" name="submit" value="Send">
   
        </form>
    </body>
</html>

这是pag1.php文件:

<?php
    echo $_POST['search'];
?>

我见过类似的方法,但我不想在 iframe 上加载pag1.php,我想在我的实际窗口上加载它。

编辑:我知道我可以将表单标记中的 action 元素更改为pag1.php,但这是一个基本示例,以防我需要在将数据发送到pag1.php文件之前验证同一文件中的 $_POST 数组.

标签: phphtml

解决方案


您可以包含 pag1.php 并设置标志以显示表单

<?php
    $showForm = true;
    if($_SERVER['REQUEST_METHOD'] == 'POST' ){
        $uncomplete;
        foreach($_POST as $val){
            if(empty($val)){
                $uncomplete = true;
                break;
            }
        }
        if(!$uncomplete){         
            include("pag1.php");
            $showForm = false;
        }
    }
?>

<?php if($showForm): ?>
<!DOCTYPE html>
<html>
    <head>
        <title>Form</title>     
        <meta charset = "UTF-8">
    </head>
    <body>
        <form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="post">

            <input type="text" name="search"><br><br>

            <input type="submit" name="submit" value="Send">
   
        </form>
    </body>
</html>
<?php endif; ?>

推荐阅读