2016-03-31 21 views
1

ログインしていないすべてのユーザーを特定のディレクトリの任意のファイルからリダイレクトする方法を探しています。ログインしていないユーザーにPHPをリダイレクト

私はadminというディレクトリを持っています。

ログインしている唯一のユーザーは自分です。

私はこのようなスクリプトを使用して、私がログインしているかどうかを確認し、そうでなければリダイレクトします。

if(isset($_SESSION['user']) { 
if($_SESSION['user'] == "username") { 
    echo "Welcome, " . $_SESSION['user']; 
} 
else { 
header("Location: index.php"); 
} 
} 

かなり簡単です。かなりストレートです。私は機密データを扱っていないため、管理ページは自分のサイトの動作を妨げることができないため、余分なセキュリティは必要ありません。

しかし、特定のadminディレクトリを確認するためにリダイレクトを作成するにはどうすればよいですか?

このスクリプトはすべての単一ページに含まれているので、そのディレクトリ以外のすべてのファイルを除外する必要があります。 in。

私はこれがうまくいくと思っていました。

index.phpファイルが2つあると問題が発生しますか? 1つはメインディレクトリ用、もう1つはサブディレクトリ用ですか?

私は$directory = "admin/";をスクリプトに含めましたが、それらのファイルがそのディレクトリにある場合にのみリダイレクトする方法についてはわかりません。

注意:私は急いでこれらの例を書いたので、他のエラーがあるかもしれません。もしそうなら、申し訳ありません。

if(isset($_SESSION['user']) { 
if($_SESSION['user'] == "username") { 
    echo "Welcome, " . $_SESSION['user']; 
} 
else { 
$directory = "admin/"; 
$redirect[] = array(); 
$redirect[] = "page1.php"; 
$redirect[] = "page2.php"; 
if (in_array(($_SERVER["SCRIPT_FILENAME"], $redirect)) { 
    header("Location: index.php"); 
} 
} 
} 

ディレクトリにコードを追加するにはどうすればよいですか?

答えて

2

私はあなたの質問を正しく理解していれば$_SESSION['user']/admin/ディレクトリ内のファイルにアクセスすることなくリダイレ​​クトしたい人はいますか?

if (!isset($_SESSION['user']) && stristr($_SERVER['SCRIPT_FILENAME'],'admin'){ 
    header('Location: http://www.goodbye.com'); 
} 

ヘッダーにhttpを含む完全なURLが表示されます。 HTTPヘッダーには、正常に機能するための完全な絶対URLが必要です。

+0

admin.phpのようなadminという名前のスクリプトは探していませんか? –

+0

iirc、ルートからのパスを含める必要があります。その値をエコーすることでこれを試すことができます。または 'print_r($ _ SERVER);を実行してください。 – Garytje

+0

これを読んだので、私は少しこれを理解していると思います。私は配列を使い続けようとしています。将来、 'admin'ディレクトリに1つか2つのファイルがあり、それがパブリックにアクセスできるので、すべてのファイルをリダイレクトしたくないからです。 –

関連する問題