2013-02-21 63 views
0

我想请一些帮助。如何检查功能是否仅包含在子文件夹的页面中

我有网站的结构是这样的:

root folder(mysite): 
- subfolder: includes (has inside the initialize.php - I include it on the top of ALL my pages) 
- subfolder: admin (has inside the localhost/mysite/admin/index.php, localhost/mysite/admin/edit.php, localhost/mysite/admin/delete.php) 

index.php(localhost/mysite/admin/index.php) 
albums.php 

我也有一个功能的loggedIn()允许访问管理员文件夹中的页面,只有当用户登录因此,代码后台管理页面里面是这样的:

<?php require_once('../includes/initialize.php'); ?> 
<?php loggedin(); //I put this only in pages inside admin folder ?> 
<?php include('header.php'); ?> 
/// Instead inside root pages is like this: 
<?php require_once('includes/initialize.php'); ?> 
<?php include('header.php'); ?> 

我想什么,虽然做的是把我的功能initialize.php内,还进行检查,使确保的loggedIn()在所有只包括admin文件夹内的页面,所以localhost/mysite/index.php将不会有它,而不是localhost/mysite/admin/index.php将它。

+0

请注意,正确的拼写是'initialize'而不是'initilize'。 – 2013-02-21 10:14:45

回答

1

你可以把这样的事情在initilize.php文件

$dir = basename(dirname(__FILE__)); 
if($dir == 'admin') { 
    loggedIn(); 
} 

这将是这样做的一个非常简单的方法,如果管理员/目录中不包含任何其他目录,将只工作。

编辑

$dir = basename(dirname($_SERVER['SCRIPT_NAME']); 

应该给你的当前目录你在。所以,如果你是管理/ index.php文件页面上$dir现在将等于admin。执行小的if语句来检查目录是否等于管理员,以及是否执行登录检查。

现在好了,在admin /目录什么是要调用的loggedIn()函数,所以你必须将login.php中文件放在管理员/目录之外或者做类似

$fileName = basename($_SERVER['SCRIPT_NAME']); 
if($dir == 'admin' && $fileName != 'login.php') { 
    loggedIn(); 
} 

它会完成工作,但我建议您查看访问控制列表。

+0

'__FILE__'是当前文件,所以* initilize.php *。您正在寻找'$ _SERVER ['SCRIPT_NAME']'。 – 2013-02-21 10:13:30

+0

哦,是的,这是它,我没有测试它,然后我写下来。 – ibanore 2013-02-21 10:14:15

+0

是的,我回应了__FILE__并给了我initialize.php的路径。我真正想要的是不是管理文件夹内页面的路径? – Lykos 2013-02-21 10:19:01

相关问题