PHP-如何限制对页面的访问?

nan*_*zen 1 php session

我有多个页面需要保护,具体取决于用户权限.我有一个PHP来检查页面加载时当前的会话变量.

正在测试的页面; php代码放在!DOCTYPE上方.此代码用于检查客户中是否已记录.如果没有登录或者没有会话变量设置重定向到错误页面,否则什么都不做并正常加载页面

<?php
if (!isset($_SESSION["username"])){
    header("location: error.php");
}
?>
Run Code Online (Sandbox Code Playgroud)

我的会话变量仅在登录后设置,登录后用户被重定向到上面提到的页面:

if (mysqli_num_rows($results6) < 1) {  //$results6 is a query to check if the user exits in the users database
    $logInMsg = "invalid log in";
} else {
    session_start();
    $_SESSION["username"] = $uName;  //$uName is a user input user name
    header("location: pageabove.php");
}
Run Code Online (Sandbox Code Playgroud)

问题是,即使登录后我仍然被重定向到错误页面

Dar*_*ren 7

那是因为你还没有开始会议.您需要在每个要使用会话的页面上指定会话开始(阅读更多信息session_start()):

<?php
session_start(); // start session

// do check
if (!isset($_SESSION["username"])) {
    header("location: error.php");
    exit; // prevent further execution, should there be more code that follows
}
Run Code Online (Sandbox Code Playgroud)

这适用于一切.在您的登录页面和所有.你想要利用会话的任何地方,你需要启动它,否则它"在风中迷失".