我正在为一个具有管理员面板的电子商务项目设置一个Web应用程序。如何强制并自动重定向到login.php而不是index.php?
例如,如果我确实遵循此路径http://localhost/project/admin(将加载index.php)。
但是,当我尝试通过http://localhost/project/admin/login.php手动打开login.php
时,登录过程成功运行并打开了会话
文件夹结构:
在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'?>
答案 0 :(得分:4)
在您的管理目录中,创建一个包含以下内容的.htaccess
文件:
DirectoryIndex login.php
在您的管理目录中,创建一个包含以下内容的.htaccess
文件:
RewriteEngine On
RewriteRule index.php login.php [L]
我测试了选项2,如果您请求/admin
或/admin/
或/admin/index.php
可以正常工作,在3种情况下,您将被重定向到login.php
使您的index.php
像这样:
<?php
header("Location: login.php");
exit;
我不希望选项3保存额外的HTTP请求。
Make sure your Apache is allowing .htaccess files
还要选中this question。