PHP对特定页面使用header()

时间:2012-06-30 00:12:34

标签: php redirect permissions header

如果用户未登录,我正在尝试阻止查看javascript页面(.js), 我想从index.php页面写一个404或403标题,怎么做呢? 注意:我不想使用chmod,因为它全局更改文件权限而不是访问者

header("HTTP/1.0 404 Not Found", "js.js"); 

js.js是一个假参数,只是我想要它的样本或类似的东西,

5 个答案:

答案 0 :(得分:2)

您需要一个单独的脚本。 如

file.php

$file = $_GET['file'];
//whitelist files
$filelist = array('js.js');
if(in_array($file, $filelist))
{
    header('Cache Control: No-store');
    header('Content-Disposition:inline;filename="' . $file . '"');
    include "../files/$file";

}

使用它

<script src="files.php?file=js.js"></script>

并将您的文件放在非Web可访问的位置

答案 1 :(得分:0)

除了使用单独的php脚本发出* .js之外,没有安全的方法可以做到这一点。在此脚本中,您将检查用户的cookie /会话数据,然后readfile()您要保护的js。

这是一种真正的hacky方式......为什么你需要它?

答案 2 :(得分:0)

人们已经建议你如何做到这一点。这是一个实用的解决方案。

如前所述,您编写了一个脚本来执行会话检查,并使用header()调用重定向到您想要的任何错误处理解决方案。

我不主张你调用脚本js.js.php。通常,由于apache的内在问题,您不希望允许带有somename.somename.ext的文件。

相反,只需将脚本命名为js.js.但是,js.js的源代码应该是执行会话检查的php代码,如果可以的话,返回带有相应mime类型头的javascript源代码。

然后在您的htaccess目录中添加自定义文件规则:

<Files js.js>
SetHandler application/x-httpd-php
</Files>
然后,Apache会将js.js视为一个php文件,即使此功能不可见。

答案 3 :(得分:0)

这不能回答这个问题,但如果用户没有必要的权限,可以做的只是不要求JS脚本。你要做的是过度杀伤而没有附加价值。

<?php if ($isUserLoggedIn): ?>
    <script src="js.js" type="text/javascript"></script>
<?php endif; ?>

答案 4 :(得分:-1)

您可以创建自己的404页面,并在您想要的文件部分中使用include功能。