在apache中为HeaderName的PHP脚本添加$\会话
因此,我有一个登录脚本,在用户登录后为其分配一个会话。如果会话不存在,该脚本通常重定向到索引,否则它将继续重定向到另一个名为login_successful.php的php脚本 我将会话脚本添加到HeaderName中,因为我有一个文件目录,需要防止未登录的人访问该目录,并且我希望阻止对uploads目录中文件的直接URL访问。为了简单起见,我不想使用PHP列出目录。这是我的.htaccess:在apache中为HeaderName的PHP脚本添加$\会话,php,apache,apache2,session,Php,Apache,Apache2,Session,因此,我有一个登录脚本,在用户登录后为其分配一个会话。如果会话不存在,该脚本通常重定向到索引,否则它将继续重定向到另一个名为login_successful.php的php脚本 我将会话脚本添加到HeaderName中,因为我有一个文件目录,需要防止未登录的人访问该目录,并且我希望阻止对uploads目录中文件的直接URL访问。为了简单起见,我不想使用PHP列出目录。这是我的.htaccess: Options +Indexes IndexOptions FancyIndexing AddTyp
Options +Indexes
IndexOptions FancyIndexing
AddType text/html .php
Addhandler application/x-httpd-php .php
HeaderName /header.php
以下是Apache HeaderName的my header.php:
<?php
session_start();
// IF USER NOT REMEMBERED(DID NOT CLICK REMEBER ME BUTTON) OR NO SESSION IS FOUND THEN THROW HIM OUT TO LOGIN
//SECURITY SO THAT USERS CANT ACCESS WEB URL DIRECTLY
if (!isset($_SESSION['myusername']) && !isset($_COOKIE['myusername']))
{
header("Location: index.php");
}
?>
如果我使用像echo
这样的正则php表达式,HeaderName指令可以工作,但不能与上面的代码一起工作
我做错了什么
感谢您的帮助我敢打赌headername已经在通过headername发送到您要包含的文件之前输出了
…
类型的内容,这意味着不再允许调用header()
。但是在php中,您可以先调用html标记,然后再调用php,以php的顺序不是问题。但是关于header()问题,您可能是对的。是的,但您不仅仅是在处理php。。。您也在处理apache,除非apache在执行任何其他输出之前调用您的Headle脚本,否则您将永远无法让header()调用工作,因为apache本身已经触发了输出。您也不能使用任何PHP缓冲方法,因为PHP是在apache完成输出后启动的。@MarcB作为一种解决方法,我使用了meta标记刷新,它工作了。但是,即使目录不可访问,文件也无法访问。是否仍要阻止文件下载,除非登录?@fixnode不允许直接访问要下载的文件,请使用启动下载的脚本,这样您就可以在下载开始之前请求登录