私はここで前にこの質問をしましたが、ユーザーCheekySoftは、「提案されたソリューションを実装する方法を尋ねている」と指摘しました。代わりに、「問題を述べてソリューションのアイデアを求める」必要があります。だからここに行きます。
Linuxサーバーでは、ファイルを次のように設定しています。
/home
├── user1
│ ├── [-rwx------] index.html
│ └── [-rwx------] index.php
└── user2
├── [-rwx------] index.html
└── [-rwx------] index.php
Apache仮想ホストをで設定している場合
<Directory /home/user1>`
<Directory /home/user2>
次に、[任意の]ユーザーはwww.example.com/user1/index.html
またはに移動できwww.example.com/user2/index.html
ます。ただし、これらのファイルのアクセス許可は0700
、したがって、Web経由ではアクセスできません。私がsuPHPを使用しているのはこのためです。
議論のためにindex.php
、次のようなものだけが含まれているとしましょう
index.php:
<?php
echo file_get_contents('index.html');
exit();
?>
これで、suPHPが設定されたので、user1は www.example.com/user1/index.php
viewに移動できますindex.html
。同様に、user2は www.example.com/user2/index.php
viewに移動できますindex.html
。ただし、user1はuser2のページを表示するために移動することもでき、user2の場合はその逆も可能です。www.example.com/user2/index.php
index.html
これに対処する自然な方法は、PHPセッションを使用することです。ページへのすべてのリクエストはメインページ(つまりwww.facebook.com
)にリダイレクトされ、ユーザーはデータベースに対して検証されてから、正しいページにリダイレクトされます(下の画像を参照)。
ユーザーはページ(つまり)に移動し、有効なセッションが存在することを確認するためにハードコーディングされwww.example.com/page1.html
たページ1の一部があります。存在する場合は、ページがロードされます。存在しない場合、ユーザーはこの場合はにリダイレクトされます。ログインして有効なセッションが確立されると、元のページにリダイレクトされます。これを実行するように変更できます。index.html
index.php
indexValidate.php:
<?php
//this is purely pseudo code, I can't guarantee it will work
session_start();
require_once 'Session_Validator.php';
$sv = new Session_Validator();
$sv->validate($un, $pwd);
echo file_get_contents('index.html');
exit();
?>
ただし、私の設計では、これらのページ(page1.html
、page2.html
...)はユーザー自身のディレクトリ(index.html
、index.php
)にあるため、サーバーは、有効なセクションをチェックするこのハードコードされたセクションがあることを要求できません。ユーザーはファイルを編集するだけで、このセクションを削除できます。もちろん、これはユーザーの側ではばかげていますが、セッションチェックセクションが上部にあるように、ユーザーがファイルをすべて変更する必要はありません。これをシームレスにしたいと思います。
いくつかの注意:
- Apacheを使用して、すべてのリクエストを単一の
validateUser.php
スクリプトにリダイレクトできます。このスクリプトは、ユーザーを検証し、有効な場合は、リクエストされた元のスクリプトを呼び出します。ただし、これには、suPHPがすでにユーザーに切り替えられているという副作用があります。var-www
- ApacheWebログイン認証を使用したくない
誰かが私の問題の解決策を提供できますか?