【问题标题】:how to restrict file access using htaccess file , if user session is not set in php如果未在 php 中设置用户会话,如何使用 htaccess 文件限制文件访问
【发布时间】:2017-05-16 09:13:38
【问题描述】:

我遇到以下代码的问题,因为我的 htaccess 代码是

RewriteEngine On
# you can add whatever extensions you want routed to your php script
RewriteCond %{REQUEST_URI} \.(zip)$ [NC]
RewriteRule ^(.*)$ "pathoffile"/download_file.php [L]

and php code is 

<?php
session_start();
if(!isset($_SESSION))
{
echo "Access Denied";   
}


?>

当我点击以下链接时, 如果会话存在,应该下载文件但它不存在。

【问题讨论】:

  • 您可以在 download_file.php 文件本身中添加限制。在顶部写下您的会话条件。
  • 您已将请求重写为脚本文件 - 因此该脚本文件现在完全对之后发生的事情负责。您的脚本不仅需要处理负面情况(用户未授权 - 没有下载,而是出现错误消息),还需要处理正面情况:您的脚本需要读取文件的内容并将其输出到浏览器。跨度>
  • 在我看来,使用session_start();,您的$_SESSION 数组将始终设置(即使为空)并且您的测试始终为真。如果你在某处创建会话并想在这里检查它,你应该在创建它时设置一个 var,并在会话数组中检查这个键
  • 谁能给我提示,假设我知道任何下载链接的 url,如果用户输入直接 URL 进行下载,我可以停止从 URL 直接访问,然后不能访问,但可以从项目中做下载。我尝试过使用会话系统但没有成功。

标签: php mysql .htaccess


【解决方案1】:

您可以将所有文件请求重定向到 download_file.php?with=filename,然后您可以从那里验证用户部分。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-21
    • 2012-03-03
    • 2018-06-06
    • 1970-01-01
    • 2015-02-24
    相关资源
    最近更新 更多