Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在apache中为HeaderName的PHP脚本添加$\会话_Php_Apache_Apache2_Session - Fatal编程技术网

在apache中为HeaderName的PHP脚本添加$\会话

在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

因此,我有一个登录脚本,在用户登录后为其分配一个会话。如果会话不存在,该脚本通常重定向到索引,否则它将继续重定向到另一个名为login_successful.php的php脚本

我将会话脚本添加到HeaderName中,因为我有一个文件目录,需要防止未登录的人访问该目录,并且我希望阻止对uploads目录中文件的直接URL访问。为了简单起见,我不想使用PHP列出目录。这是我的.htaccess:

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不允许直接访问要下载的文件,请使用启动下载的脚本,这样您就可以在下载开始之前请求登录