我想请一些帮助。
我的网站结构如下:
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将拥有它。
答案 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();
}
它将完成工作,但我建议您查看访问控制列表。