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

4

1 回答 1

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();
}

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

于 2013-02-21T10:09:22.527 回答