3

パスワードで保護したいページがあります。ユーザーが URL www.webpage.com/page.phpにアクセスすると、このページにアクセスできるようになります。この URL は、確認コードとともにユーザーに電子メールで送信されます。

ほとんどのページを jQuery で記述しています。適切なパスワードなしでページにアクセスできないようにする方法を知りたいです。ユーザーが適切なパスワードを入力して確認すると、コンテンツが表示されます。

jQueryダイアログで何かをしてみました。コンテンツを非表示にしてから確認後に表示しましたが、ユーザーはページのソースを表示するとコンテンツを表示できます。

どうすればいいですか?

新しいページの作成を避けようとしているだけです。セッションを使用する必要があると思います。

4

3 に答える 3

1

迅速かつ簡単なソリューションが必要な場合は、PHP で HTTP 認証を使用することも検討できます。次のように簡単にできます

<?
header("Content-type: text/html; charset=utf-8");
if(empty($_SERVER['PHP_AUTH_USER'])) {
    header('WWW-Authenticate: Basic realm="Please input"');
    header('HTTP/1.0 401 Unauthorized');
    echo 'Please enter the correct username and password.';
    exit;
} else {
    echo "Username: ".$_SERVER['PHP_AUTH_USER']."<br>";
    echo "Password: ".$_SERVER['PHP_AUTH_PW']."<p>";
    $username = "demo";
    $password = "demo";
    if(($_SERVER['PHP_AUTH_USER'] != $username) || ($_SERVER['PHP_AUTH_PW'] != $password)) {
        echo "Login Failed!";
    } else {
        echo "You're in!";
    }
}
?>

より精巧な実装もここで見つけることができます。

于 2012-09-15T03:49:37.497 に答える
1

はい、これを行うことができますが、クライアント側のみのパスワードでページを保護した場合、ユーザーはそのために JavaScript/jquery を変更できるため、パスワードを確認した後に ajax でコンテンツをロードできるため、良い考えではありません。

パスワードなしでアクセスできないようにするには、パスワードが検証していないデータをロードしないでください (パスワードを ajax で検証していると思われるため)

于 2012-09-15T02:59:14.373 に答える
0

PHP で (正しい) パスワードを使用していることを検証してから、実際にコンテンツを出力する必要があります。彼らがパスワードを持っていない場合、それを非表示にするために結び付けることは、勝ち目のないシナリオです.

通常、これにはセッション変数が使用されます。検証スクリプトはユーザーのログイン/パスワードをチェックし、それが受け入れられると、ユーザーにセッション変数を割り当てます。

次に、実際のコード (シークレット ページの場合) でこのセッション変数をチェックし、存在する場合はコンテンツをユーザーに表示し、一致しない場合はエラー メッセージを表示するかリダイレクトします。ユーザーは を介し​​て別のページに移動しheader()ます。

于 2012-09-15T02:58:23.370 に答える