2014-12-07 49 views
1

我想从PHP中分配一个变量,并将该变量提供给我的.htaccess文件,以便它可以使用该值来拒绝或允许访问。如何使.htaccess访问PHP变量?

index.php文件:

<?php 
    session_start(); 
    $_SESSION['REMOTE_USER'] = 'valid'; 
    $_SERVER['REMOTE_USER'] = 'valid'; 
    $_ENV['REMOTE_USER'] = 'valid'; 
    putenv('REMOTE_USER=valid'); 
    print 'You are allowed.'; 

这里是什么,我的.htaccess文件(这是在同一个目录中index.php)内尝试过一个例子:

# Doesn't work... Always denied. 
SetEnvIf Remote_User valid allowed 
SetEnvIf Remote_User notvalid disallowed 
Deny from all 
Allow from env=allowed 

是否有根据PHP提供的值,通过.htaccess来允许或拒绝访问的方式?

+0

唯一可以远程执行的选项(如果你真的需要这种方法的话)是创建临时状态/锁定文件,以便设置一个PHP会话变量。然后可以通过从'%{HTTP_COOKIE}'和一个简单的RewriteCond中提取ID来探测它们的存在。 – mario 2014-12-07 01:21:14

回答

2

至于其他的答案已经状态,你有一个鸡/蛋的问题:PHP正在运行的事实意味着.htaccess没有理由禁止它,并且它的工作已经完成。

拒绝访问的PHP,一个页面,你应该做更复杂的认证和授权的东西,是微不足道的,但:

if($myUser->shouldNotBeHere()) { 
    header('HTTP/1.1 403 Forbidden'); 
    die('Access denied!'); 
} 

这看起来同一个Apache级deny到浏览器。

3

.htaccess文件运行之前 PHP脚本运行。换句话说,你所描述的是不可能的。

2

.htaccess由服务器读取之前的PHP文件,所以你所寻找的是不可能的。

在另一方面,你可以通过设置内部.htaccess

SetEnv HTTP_MY_VARIABLE "my value" 

PHP变量也许会帮助你以某种方式