2

明らかに私はこれを行う独自の意見と方法を持っていますが、より良い方法があるかどうかを知りたいと思います.

ログインをどのように管理しますか。つまり、メンバーのみのコンテンツを提供する前に、ユーザーが有効なログインでログインしているかどうかを確認します。

4

6 に答える 6

4
  • $_SESSIONを利用する
  • session_start();ですべてのページを開始します。
  • メンバーコンテンツのカスタム$_SESSION変数を確認します($_SESSION['username']
  • 変数が表示されない場合は、ログインフォームを表示してください
  • ログインに成功$_SESSION['username']すると、現在ログインしているユーザーのニックネームに設定されます

注:これはログイン管理の簡単な説明です。ここでは説明されていないことがたくさんあります。SQLインジェクションセッションハイジャックなど、さまざまなセキュリティホールを回避する必要があります)

于 2010-10-15T13:48:32.177 に答える
2

むかしむかし、共通のインクルード ファイルでインスタンス化された Session クラスを作成しました。session_*andを使用するのではなく$_SESSION、クライアント側の SID を持つ Cookie を使用しました (これは、salt を使用した SHA-256 ハッシュと数回の反復だったと思います)。サーバーでは、クライアント側の SID が別のハッシュ関数を数回使用して、リモートの MySQL データベースの主キーであるサーバー側の SID を取得しました。

なんで?サイトは共有ホスティングを使用していたため、データベースには 18 歳未満の人の詳細が保持されていたため、セッションは安全である必要がありました。PHP はデフォルトで/tmp、セッション データをシリアル化されたファイルとして保存する場所として使用します。/tmp同じホスト上の顧客) は、シリアル化された形式のセッション データにアクセスし、それを使用して認証されたように見せることができます。

セッション処理や HTTP ヘッダーなどについて学ぶ良い方法でした。また、標準的な PHP の方法よりもはるかに使いやすいと感じました。

于 2010-10-15T14:09:14.723 に答える
1

私はもう自分でそれを管理しません。うまくいかないことが多すぎます。代わりに、stackoverflow.com と同じようにOpenIDを使用します。

于 2010-10-15T14:00:26.907 に答える
1

認証クッキーを確認します。

于 2010-10-15T13:40:49.217 に答える
1

それが最善の方法かどうかはわかりませんが、新しいセッションを作成するときに、ユーザー クラスを作成してオブジェクトを作成することに慣れています。このオブジェクトをセッションに保存し、$_SESSION 配列の処理を避けるために、セッション変数を環境変数にリンクするのに慣れています。このようにして、ユーザーに関連するすべての情報 (名前、姓、アクセス レベルなど) とともに、オブジェクト自体の内部にログイン メソッドとログイン ステータスを保持できます。

そんな感じ:

include('user.class.php');
session_start();

if(!isset($_SESSION['user']))
{
   $_SESSION['user'] = new User();
}

$USER = &$_SESSION['user'];
于 2010-10-15T14:52:48.487 に答える
0

新品ではありませんが、このシステムは驚くほど良いです。元の記事にさらに最近の更新が加えられている可能性があります。

于 2010-10-15T16:01:55.173 に答える