如何检查函数是否仅包含在子文件夹的页面中

时间:2013-02-21 10:00:02

标签: php directory

我想请一些帮助。

我的网站结构如下:

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(),只有在用户登录时才允许访问admin文件夹中的页面。所以管理页面中的代码是这样的:

<?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中,并执行检查以确保只在managed文件夹内的所有页面中包含loggedin(),所以localhost /mysite/index.php不会有它,而localhost / mysite / admin / index.php将拥有它。

1 个答案:

答案 0 :(得分:1)

您可以在initilize.php文件中输入类似的内容

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

这将是一种非常简单的方法,它只有在admin /目录不包含任何其他目录时才有效。

修改

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

应该为您提供当前目录。因此,如果您在 admin / index.php 页面上$dir现在将等于admin。执行小if语句以检查目录是否等于admin以及是否进行登录检查。

现在,admin /目录中的任何内容都将调用loggedIn()函数,因此您必须将login.php文件放在admin /目录之外,否则执行类似

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

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