2

私は PHP を学んでおり、認証を使用した非常に単純な Web サイトを開発しています。私は安全な認証システムを作成するのに十分ではないと思うので (とにかく時間があまりありません)、このスクリプトhttp://php-login.net/を検索して見つけました。完璧に。私はスクリプトの「2-advanced」バージョンを使用しており、index.php ファイルには次のようなものがあります。

<?php
// load php-login components
require_once("php-login.php");

// create a login object. when this object is created, it will do all login/logout stuff automatically
// so this single line handles the entire login process.
$login = new Login();

// ... ask if we are logged in here:
if ($login->isUserLoggedIn() == true) {

    include("views/logged_in.php");

} else {

    include("views/not_logged_in.php");
}

したがって、ユーザーがログインしている場合は、logged_in.php または not_logged_in.php の内容が表示されます (ビュー ディレクトリには、ビューに直接アクセスできないようにする .htaccess があります)。他のページもこのように機能します (たとえば、ルート ディレクトリの registration.php には、コンテンツがあるファイル views/registration.php が含まれます)。

だからここに私の質問があります:この方法でそれを行う方が便利ですか、それとも(少なくともインデックスについては)1つのビューだけを作成し、このようなもので単一の要素を制御する方が便利ですか

if ($login->isUserLoggedIn() == true) { echo "you are logged in"
} else {echo "login form" }

必要なすべての要素に対して?クライアントの場合は基本的に同じだと思いますが、サーバー側ではわかりません。初心者なので質問したかったのです。私の英語で申し訳ありませんが、理解していただければ幸いです。

PS: SO で「何が最善の方法ですか」という質問をすることができるかどうかわかりませんでした。できなかったら申し訳ありませんが、次回はできません。

4

1 に答える 1

4

私の好みの方法は、ユーザーを認証し(ただし、通常はデータベース内のハッシュされたパスワードによって)、セッションを使用してログインステータスを追跡することです。次に、次のような変数を設定$_SESSION['loggedIn'] = true;し、スクリプトへの後続の呼び出しでそれをテストできます。

例えば

if(isset($_SESSION['loggedIn'] && $_SESSION['loggedIn'] == true)) {
    //Redirect to welcome page
} else {
    //Redirect to other page for users that are not logged in
}

ユーザーがリンクをクリックしてログアウトすると、フラグの設定を簡単に解除できます。

unset($_SESSION['loggedIn']);

基本的に、セキュリティを含むニーズに応じて、これを行うにはいくつかの方法があります。繰り返しになりますが、私の場合は、データベースに保存されたハッシュ化されたパスワードを使用してユーザーを認証し、セッション変数を使用してユーザーのログイン ステータスを追跡します。

あなたが今持っているものが便利で、あなたのニーズを満たしているなら、あなたは大丈夫です.

于 2013-10-22T18:07:33.873 に答える