Php 限制直接页面访问

Php 限制直接页面访问,php,redirect,access-control,Php,Redirect,Access Control,为了保护我正在工作的站点的管理员区域,我制作了一个index.php,其中包含 if (isset($_POST['password']) && isset($_POST['userName'])) { if($_POST['password']==$pass && $_POST['userName']==$username) { header( 'Location: admin.php' ) ;

为了保护我正在工作的站点的管理员区域,我制作了一个index.php,其中包含

if (isset($_POST['password']) && isset($_POST['userName'])) {
        if($_POST['password']==$pass && $_POST['userName']==$username)
        {
            header( 'Location: admin.php' ) ;
        }

这将重定向到同一文件夹中名为admin.php的文件。问题是,如果我写
localhost/folder/admin.php
,我就可以访问这个文件。请告诉我如何限制直接访问此页面。访问它的唯一方法应该是在用户名和密码之后从index.php开始。

设置一个表示用户已成功登录的会话值,在需要保护的每个页面上检查该值,如果未设置该值,则重定向到login。

设置一个会话变量,并在每次有人访问admin.php时检查它

<?php
  if (isset($_POST['password']) && isset($_POST['userName'])) {
      if ($_POST['password'] == $pass && $_POST['userName'] == $username) {
          if (!session_id())
              session_start();
          $_SESSION['logon'] = true;

          header('Location: admin.php');
          die();
      }
?>

您应该研究PHP会话。您可以在重定向文件中设置会话变量“isLogged”,然后在admin.php中检查会话变量是否已注册,如果未注册,则重定向到登录页面

session_start();
if (isset($_POST['password']) && isset($_POST['userName'])) {
        if($_POST['password']==$pass && $_POST['userName']==$username)
        {
            header( 'Location: admin.php' ) ;
            $_SESSION['isLogged'] = true;
        }
admin.php

<?php
  if (isset($_POST['password']) && isset($_POST['userName'])) {
      if ($_POST['password'] == $pass && $_POST['userName'] == $username) {
          if (!session_id())
              session_start();
          $_SESSION['logon'] = true;

          header('Location: admin.php');
          die();
      }
?>
session_start();
if(!$_SESSION['isLogged']) {
  header("location:login.php"); 
  die(); 
}
注意:会话_start();必须先调用,然后才能使用$\u会话global