【问题标题】:htaccess deny acces to directory if logged out (checked with php)如果注销,htaccess 拒绝访问目录(用 php 检查)
【发布时间】:2013-11-05 23:09:54
【问题描述】:

如果访问者未登录,我想拒绝他们访问特定目录。 并将它们重定向到“您尚未登录”的 .html 文件。

我该怎么做?如果注销,有什么方法可以用 php 编辑 .htaccess 吗?

【问题讨论】:

  • apache 不知道您的“登录”状态,除非您使用的是 http 级别的身份验证(例如“基本”)。您可以检查会话 cookie 的存在,但这几乎没用,因为 apache 无法读取 PHP 会话以查看该会话是否是“登录”会话。
  • 我不会用 .htaccess 那样做 - 我怀疑除非使用 Apache AUTH 是可能的,所以我会检查用户是否登录到该具体页面,如果没有重定向他(使用 PHP)到 403 错误页面...

标签: php .htaccess


【解决方案1】:

Apache 无法做到这一点。

实现此目的的一种方法是通过重写规则将每个请求转发到 php 脚本,并通过此 PHP 脚本提供文件。

但这很重,如果你的文件很大,这不是一个好的解决方案。

也许您应该看起来像Apache dbd auth mod(如果您的用户在数据库中)。但同样,这不应该是 Apache 的工作,因为它并不擅长。

【讨论】:

    【解决方案2】:

    这不是 Apache 的工作,但 PHP 可以为您完成。

    在仅限公共的页面上,不定义会话参数。

    在公共登录页面上,定义所有会话参数。

    在仅限会员的页面上,按原样开始会话:

        <?php
    
        session_start();
    
        // Assuming variables have been initally defined
        if(isset($_SESSION['username']) AND isset($_SESSION['password']))
        {
            echo 'You are now logged in';
                header('Location: sosecretpage.php');
        }
    
        else
        {
            echo 'You are not logged in. You dont have access to this page';
        }
        ?>
    

    【讨论】:

      猜你喜欢
      • 2017-03-17
      • 1970-01-01
      • 2012-08-02
      • 2015-01-26
      • 2016-10-18
      • 2015-07-30
      • 2016-01-21
      • 2017-11-15
      • 2017-10-03
      相关资源
      最近更新 更多