2011-09-10 21 views
1

私は基本的にディレクトリに入るときにログインするようにユーザに求めているスクリプトを持っています。ユーザーが正しく認証されると、そのサブディレクトリにリダイレクトされます。それはうまくいきますが、URLを変更して他の人のサブディレクトリを入力すると、そのURLにアクセスできます。高度なディレクトリ保護

AuthType Basic 
AuthName "Restricted Area" 
AuthUserFile (path_to)/.htpasswd 
Require valid-user 
Options +FollowSymlinks 
RewriteEngine on 
RewriteRule ^(.*)/$ index.php?a=$1 
ErrorDocument 404 http://localhost/(path_to)/myfiles/ 

そして、index.phpの中の私のPHP:現在

<?php 
//$_SERVER['PHP_AUTH_USER'] = Entered username 
//$_SERVER['PHP_AUTH_PW'] = Entered password 
if (!isset($_SERVER['PHP_AUTH_USER'])){ 
    header('WWW-Authenticate: Basic realm="My Realm"'); 
    header('HTTP/1.0 401 Unauthorized'); 
    exit; 
} 
else { 
    if($_GET['a']==null){ 
     header("Location: ".strtolower($_SERVER['PHP_AUTH_USER'])."/"); 
     echo Hello; 
    } 
    else{ 
     if(strtolower($_SERVER['PHP_AUTH_USER'])==strtolower($_GET['a'])){ 
      echo "welcome, ".$_SERVER['PHP_AUTH_USER']; 
      echo "<br/>you accessed ".$_GET['a']; 
     } 
     else { 
      echo "woops, you're not ".$_GET['a']."!"; 
     } 
    } 
} 
?> 

、作品

は、ここに私の.htaccessです。 URLを変更した場合、「うわー、あなたは悪いユーザー名ではない」と言われますが、実際のユーザーが実際に自分のものを見ることができないという問題があります。 Apacheの場合と同様に、ファイルが見つかった場合はindex.phpまたはディレクトリリストを表示したいが、ここでどのように行うかわからず、すべての要求をキャッチして処理する必要がある。

どうすればいいですか?私は完全に失われています:(

私は何が起こりたいのシナリオの例: Person1は自分の資格情報を使って自分のアカウントにログインします、彼らは自分のものを見ることができるmyfiles/person1に連れて行きます。

答えて

0

私は他のユーザにディレクトリを入力することが許可されている理由を理解できません。あなたは同じパスワードファイルに自分のユーザ名を気付かずに保存しているかもしれません。

Apachaには良いチュートリアルがありますので、ぜひご覧ください。

しかし、クイックスタートは、私がテストした。この例のようになります。

場所を.htaceessいくつかの「例」ディレクトリに

このコンテンツを:あなたのCドライブ上のその後

AuthName "Please notice! This directory is protected!" 
AuthType Basic 
AuthUserFile c:/.htpasswd 
<Limit GET POST PUT> 
Require valid-user 
</Limit> 

(私はWindows上で、読み出しアクセスをチェック)が必要このコンテンツでの.htpasswdファイルを置く場合:

john:smith 
それからちょうどジョンとして入力

(ユーザー名)SMIT h(パスワード)。

保護するすべてのディレクトリで同じ操作を行い、.htpasswdをrealted .htpasswdファイルに置きます。

これは非常に基本的なものです。チュートリアルを読んでもっと深く理解してください。

関連する問題