问题描述
我正在编写一个包含登录页面(作为索引页面)的应用程序,我想在登录有效时分配一个 $_SESSION['user'] 变量,以便使用身份验证脚本保护受限页面。我在没有设置会话的情况下一切正常,但是一旦我尝试从 index.PHP 启动会话,一切都会停止工作。有人可以向我解释发生了什么吗?我已经阅读和尝试不同的东西 2 天了..
db.PHP
<?PHP
$con = new sqlite3("db/test.db");
if(!$con){
echo "Failed to connect to the Hosts Database";
}
?>
auth.PHP
<?PHP
if(!isset($_SESSION['user'])){
header('Location: index.PHP');
}
?>
index.PHP
<?PHP
session_start();
?>
<!DOCTYPE html>
<head>
<title>App</title>
<Meta charset="UTF-8">
<Meta name="viewport" content="width=device-width,initial-scale=1.0">
</head>
<body>
<?PHP
require("db/db.PHP");
if(isset($_POST["login"])){
$username = $_POST["username"];
$passwd = $_POST["upass"];
$sql = "SELECT * FROM access WHERE (user='".$username."' AND pass='".md5($passwd)."');";
$r = $con->query($sql);
if($r){
$_SESSION['user'] = $username;
echo "<script>window.location.replace('access.PHP');</script>";
}
} else {
?>
<form name="loginForm" id="loginForm" method="POST" action="">
<center>
<input type="text" name="username" id="username" placeholder="Username" required/>
<input type="password" name="upass" id="upass" placeholder="Password" required />
<br />
<input type="submit" name="login" value="Login" />
</center>
</form>
<?PHP
}
?>
</body>
</html>
然后在 access.PHP 中有 include('db/auth.PHP')。正如我所说,如果我删除 session_start 并删除设置变量,它可以正常工作,实际上我之前确实在另一个脚本上工作过但丢失了它,现在我真的很困惑为什么它在尝试重做时不起作用......>
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)