Geo*_*rge 5 php redirect access-control
为了保护我正在处理的网站的管理员区域,我创建了一个包含的index.php
if (isset($_POST['password']) && isset($_POST['userName'])) {
if($_POST['password']==$pass && $_POST['userName']==$username)
{
header( 'Location: admin.php' ) ;
}
Run Code Online (Sandbox Code Playgroud)
这会重定向到名为admin.php的同一文件夹中的文件.问题是如果我写的话我可以访问这个文件localhost/folder/admin.php
.请告诉我如何限制直接访问此页面.访问它的唯一方法应该是在用户名和密码之后的index.php.
设置一个会话变量并在每次访问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();
}
?>
Run Code Online (Sandbox Code Playgroud)
和
//admin.php
if (!session_id()) session_start();
if (!$_SESSION['logon']){
header("Location:index.php");
die();
}
Run Code Online (Sandbox Code Playgroud)
你应该看看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;
}
Run Code Online (Sandbox Code Playgroud)
admin.php的
session_start();
if(!$_SESSION['isLogged']) {
header("location:login.php");
die();
}
Run Code Online (Sandbox Code Playgroud)
注意:session_start(); 必须在$ _SESSION全局可以使用之前调用.