强制重定向到PHP中的登录页面

时间:2019-08-22 20:53:32

标签: php

我正在为一个具有管理员面板的电子商务项目设置一个Web应用程序。如何强制并自动重定向到login.php而不是index.php?

例如,如果我确实遵循此路径http://localhost/project/admin(将加载index.php)。

但是,当我尝试通过http://localhost/project/admin/login.php手动打开login.php时,登录过程成功运行并打开了会话

文件夹结构:

  • index.php和login.php都位于admin文件夹中
  • connection.php,admin-header,admin-footer位于include文件夹中 路径http://localhost/project/admin
  

在Windows 10上使用XAMPP Panel v3.2

我尝试了以下方法:

  

login.php

<?php
    session_start();
    include '../include/connection.php';

    if (isset($_POST['submit'])) {
        $email = $_POST['email'];
        $password = $_POST['password'];
        $query = "select * from admin where admin_email = '$email' AND admin_password = '$password'";
        $result = mysqli_query($conn,$query);
        $adminSet = mysqli_fetch_assoc($result);
        if ($adminSet['admin_id']) {
            $_SESSION['admin_id'] = $adminSet['admin_id'];
            header("location:index.php");
        }
        else {
            $error = "You are not authenticated.";
        }
    }
?>
  

admin-header.php //包含在index.php中

<?php
    session_start();
    if (!isset($_SESSION['admin_id'])) {
        header("location:login.php");
    }
?>
  

index.php

<?php include '../include/admin-header.php'?>

1 个答案:

答案 0 :(得分:4)

选项1(目录索引)

在您的管理目录中,创建一个包含以下内容的.htaccess文件:

DirectoryIndex login.php

Option2(RewriteRule)

在您的管理目录中,创建一个包含以下内容的.htaccess文件:

RewriteEngine On
RewriteRule index.php login.php [L]

我测试了选项2,如果您请求/admin/admin//admin/index.php可以正常工作,在3种情况下,您将被重定向到login.php

选项3(HTTP重定向)

使您的index.php像这样:

<?php
    header("Location: login.php");
    exit;

我不希望选项3保存额外的HTTP请求。

Make sure your Apache is allowing .htaccess files

还要选中this question