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

ユーザーがログインしている場合にのみ管理フォルダー内のページへのアクセスを許可する関数 login() もあります。したがって、管理ページ内のコードは次のようになります。

<?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 に含まれます。

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 に答える