Php Can';无法从另一个文件获取变量

Php Can';无法从另一个文件获取变量,php,variables,Php,Variables,问题 所以,我的问题是我有一个名为login process.php的文件,它处理登录信息。我还有另一个名为index.php的文件,它是登录/主页。我的问题是我需要“server/login process.php”,但当我尝试从login process.php回显$message(其中包含登录错误)时,它不会显示。而且,我没有收到任何错误 index.php <!-- HOME PAGE --> <?php include 'server/login-proce

问题

所以,我的问题是我有一个名为
login process.php
的文件,它处理登录信息。我还有另一个名为
index.php
的文件,它是登录/主页。我的问题是我
需要“server/login process.php”
,但当我尝试从
login process.php
回显
$message
(其中包含登录错误)时,它不会显示。而且,我没有收到任何错误

index.php

<!-- HOME PAGE -->

<?php
    include 'server/login-process.php';

    if(isset($_SESSION['user'])){
        header("location: admin.php");
    }
?>

<!DOCTYPE html>
<html>
    <head>
        <?php include'templates/head.php'; ?>

        <!-- STYLES -->
        <link rel="stylesheet" href="assets/css/index/large.css" media="(min-width: 800px)">
    </head>
    <body>
        <nav class="login-nav">
            <ul>
                <li><a href="JavaScript:void(0)"><i class="fa fa-sign-in" aria-hidden="true"></i>Login</a></li>
            </ul>
        </nav> <!-- END OF NAV -->

        <form class="login-form" action="server/login-process.php" method="post">
            <input type="text" name="username" placeholder="Username...">
            <input type="password" name="password" placeholder="Password...">

            <button type="submit" name="login-btn">Login</button>
        </form> <!-- END OF FORM -->

        <?php
            echo "
                <h2>$message</h2>
            ";

         ?>

        <?php include 'templates/scripts.php'; ?>
    </body>
</html>
<?php

require 'connect.php';

session_start();
session_regenerate_id();

$message = "";

if(isset($_POST['login-btn'])) {

    $username = $_POST['username'];
    $password = $_POST['password'];

    // if input fields are empty
    if(!empty($username) && !empty($password)) {

        try {

            $loginInfo = $link->prepare("SELECT * FROM login WHERE id = 1");
            $loginInfo->execute();
            $loginInfo = $loginInfo->fetch();

            // check if username is correct
            if($username == $loginInfo['username']) {

                // if password if correct
                if(password_verify($password, $loginInfo['password'])) {
                    $_SESSION['user'] = $username;

                    header("location:../admin.php");
                } else {
                    $message = "Your username or password is incorrect";

                    header("location:../index.php");
                }

            } else {
                $message = "Your username or password is incorrect";

                header("location:../index.php");
            }

        } catch(PDOException $e) {
            echo "Error: " . $e->getMessage();
        }

    } else if(empty($username) || empty($password)) {
        $message = "Please add your input values";

        header("location:../index.php");
    }

}

?>

登录
login process.php

<!-- HOME PAGE -->

<?php
    include 'server/login-process.php';

    if(isset($_SESSION['user'])){
        header("location: admin.php");
    }
?>

<!DOCTYPE html>
<html>
    <head>
        <?php include'templates/head.php'; ?>

        <!-- STYLES -->
        <link rel="stylesheet" href="assets/css/index/large.css" media="(min-width: 800px)">
    </head>
    <body>
        <nav class="login-nav">
            <ul>
                <li><a href="JavaScript:void(0)"><i class="fa fa-sign-in" aria-hidden="true"></i>Login</a></li>
            </ul>
        </nav> <!-- END OF NAV -->

        <form class="login-form" action="server/login-process.php" method="post">
            <input type="text" name="username" placeholder="Username...">
            <input type="password" name="password" placeholder="Password...">

            <button type="submit" name="login-btn">Login</button>
        </form> <!-- END OF FORM -->

        <?php
            echo "
                <h2>$message</h2>
            ";

         ?>

        <?php include 'templates/scripts.php'; ?>
    </body>
</html>
<?php

require 'connect.php';

session_start();
session_regenerate_id();

$message = "";

if(isset($_POST['login-btn'])) {

    $username = $_POST['username'];
    $password = $_POST['password'];

    // if input fields are empty
    if(!empty($username) && !empty($password)) {

        try {

            $loginInfo = $link->prepare("SELECT * FROM login WHERE id = 1");
            $loginInfo->execute();
            $loginInfo = $loginInfo->fetch();

            // check if username is correct
            if($username == $loginInfo['username']) {

                // if password if correct
                if(password_verify($password, $loginInfo['password'])) {
                    $_SESSION['user'] = $username;

                    header("location:../admin.php");
                } else {
                    $message = "Your username or password is incorrect";

                    header("location:../index.php");
                }

            } else {
                $message = "Your username or password is incorrect";

                header("location:../index.php");
            }

        } catch(PDOException $e) {
            echo "Error: " . $e->getMessage();
        }

    } else if(empty($username) || empty($password)) {
        $message = "Please add your input values";

        header("location:../index.php");
    }

}

?>

请删除以下所有实例:

header("location:../index.php");

从文件:login-process.php。您继续重定向,从而清除$u POST的值。

您的问题是,您正在提交表单,用于特定的页面
登录过程。php
如果一切正常,您将该页面重定向到此处的索引页面:
标题(“位置:../index.php”)。问题是,当你这样做的时候,你失去了在那个时候创建的所有变量。PHP在一个请求上下文中工作,所以,您提交您的登录名,然后对其进行处理,然后重定向它(就像您再次提交一样)

使用当前代码,您可以通过两种方式解决它

1-或者将表单发送到
index.php
如果您不添加
操作,它将提交到同一页面,因此是login.php),因为它已经需要login_process.php代码,但您必须删除该重定向(
标题(“位置:../index.php”);
)并添加一些控制变量以显示实际的索引页,而不是再次显示登录表单

2-将消息参数发送到索引页,以便它可以接收并按如下方式处理:
标题(“位置:../index.php?message=$message”)
然后检查
index.php
是否存在
$\u GET['message']
并显示它


如果您需要更多详细信息,请告诉我。

您几乎在所有情况下都重定向到
./index.php
,这会导致发送新请求时清除所有
$\u POST
字段,这反过来会导致
登录进程.php
中的顶级
If
不再执行。