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
不再执行。