2009-04-03 28 views
0

は、私はこのような構造を持っている:誰かが/家に行くときPHPおよびhtpasswdの

/home 
/home/dir1 
/home/dir2 

今、彼は(フォームで)ユーザ名とパスワードを要求されたが、私は残りのためのPHPでセッション情報を設定します/ homeのファイル。今や/ home/dir1と/ home/dir2はhtpasswdによって保護されていますが、同じユーザ名とパスワードです。私は、ユーザが/ home/dir1に行くときにユーザ名とパスワードを再入力したくない.../homeからログアウトしたときにも/ home/dir1からログアウトしたい。あなたはこれを達成するためのアドバイスをお願いできますか?

+0

両方のディレクトリはそうのような.htaccessファイルがある可能性があります。 Apacheのドキュメントを確認してください。しかし、これはプログラミングの問題ではありません。 – derobert

答えて

3

これはデフォルトの動作です。

つまり、Apacheと.htaccessファイルを使用してHTTP認証を設定している場合、ディレクトリに適用するルールはすべてその子ディレクトリにも適用され、すべてブラウザとして処理されます。

異なる動作をしたい場合、つまりサイトの一部のセクションを完全に別個のログインとして扱う場合は、.htaccessのAuthNameディレクティブを使用してセクションごとに 'realm'を指定します。 More information here。ただし、そうしないと、同じログインのすべての部分として常に扱われます。

HTTP認証に関することは、ブラウザがその機能を提供しない限り、少なくともログアウトする方法がないことです。ほとんどのブラウザでログアウトできる唯一の方法は、ブラウザセッションを終了することです(ブラウザを閉じるなど)。はい、これを行うと、/ home、/ home/dir1、/ home/dir2、およびすべてのサイト/領域のすべてのディレクトリからログアウトされます。

0

Apacheの場合、両方のフォルダが同じAuthNameを持ち、同じサイトにある場合はパスワードを共有する必要があります。あなたが同じ認証ドメイン(それが正しい名前かどうかわからない)を使用する必要が

AuthName "My Protect Folder" 
AuthType basic 
AuthUserFile /somewhere/htusers 
require valid-user 
関連する問題