限制直接页面访问

发布于 2024-11-27 09:10:03 字数 430 浏览 2 评论 0原文

为了保护我正在处理的网站的管理员区域,我制作了一个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。

In attempt of securing an administrator area of a site I'm working on I made an index.php which contains

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

This redirects to a file in the same folder called admin.php. The problem is that I can access this file if I write localhost/folder/admin.php. Please tell me how to restrict the direct access to this page. The only way accesing it should be from index.php after username and password.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

貪欢 2024-12-04 09:10:03

设置一个会话变量并在每次有人访问 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();
      }
?>

//admin.php 

if (!session_id()) session_start();
if (!$_SESSION['logon']){ 
    header("Location:index.php");
    die();
}

set a session variable and check it everytimes somebody access 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();
      }
?>

and

//admin.php 

if (!session_id()) session_start();
if (!$_SESSION['logon']){ 
    header("Location:index.php");
    die();
}
極樂鬼 2024-12-04 09:10:03

您应该查看 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

session_start();
if(!$_SESSION['isLogged']) {
  header("location:login.php"); 
  die(); 
}

注意:session_start();必须在使用 $_SESSION 全局之前调用。

You should look into PHP sessions. You can set a session variable "isLogged" in that redirection file, and then check in admin.php if that session variable is registered, if not redirect to the login page!

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

session_start();
if(!$_SESSION['isLogged']) {
  header("location:login.php"); 
  die(); 
}

Note: session_start(); must be called before the $_SESSION global can be utilised.

我ぃ本無心為│何有愛 2024-12-04 09:10:03

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

Set a session value that signifies that a user has successfully logged in, check for it on every page you want secured, redirect to login if that value isn't set.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文