2009-08-13 4 views
0

この回答はthis answerに基づいています。 Chaは私のコードとは対照的に、login -infoを格納する際に配列を使います。PHPでlogin -infoを格納する際に配列を使用するのはなぜですか?

ログインの検索効率を向上させ、データを整理しておく可能性が高いです。 しかし、これがログイン情報のすべての部分を保存するのに最適なデータ構造であるかどうかはわかりません。

私のソリューションは、情報を必要とするときにデータベースからパスハッシュを取り出し、セッションのためにPHPの配列に格納するのではなく、使用後に破棄します。また、すべての変数を独立変数として保持します。これは、スクリプト言語によるデータ操作とは対照的に、PostgreSQLを大量に使用します。

PHPで配列を使用してログインデータを保存する際の賛否両論はありますか?

[編集]

私は、データベースからデータを取得するには、現時点では、次のコードを使用します。

$result = pg_prepare($dbconn, "query22", "SELECT passhash_md5 FROM users 
     WHERE email=$1;");                              
$passhash_md5 = pg_execute($dbconn, "query22", array($_REQUEST['email'])); 

したがって、PDOに変更する必要があります。 それを学ぶ。

+0

ありがとうございました! –

答えて

1

これは単なる好みの問題でしたが、実際には関係ありません。しかし、1つの可能な使用法は、一種の名前空間です。あるページにログインと登録の2つのフォームがあるとします。明らかに、少なくとも、これらのフォームにはユーザー名とパスワードの両方のフィールドがあります。 2つを区別するために、あなたはどちらがどちらであるかを知ることができるように、register [username]とlogin [username]という名前のフィールドを持つことができます(パスワード付き)。

また、他の質問でSQLクエリを使用しないでください。誰かがログインするたびにENTIREユーザテーブルを返すことに気付いていますか?あなたのサイトで100,000人のユーザーがいる場合、何が起こるか想像してみてください。あなたのログインには数分かかるでしょうし、あなたのデータベースは無駄になります。私はあなたがこれに取り組む前にいくつかの基本的なSQLを学ぶべきだと思います。

また、プロシージャデータベース機能の代わりにPDOを使用してください。 PDOはよりクリーンで簡単ですが、場合によってはより高速になることがあります。

+0

あなたは私の答えか他の質問を意味しますか? –

+0

私はあなたの答えからSQLを参照していましたが、あなたはOPが持っていたものをコピーしたことに気付きました。明快に編集します。 – ryeguy

+0

ちょうど私の答えでいくつかのエラーをしていないことを確認する:) –

2

セッションベースのログインシステムを使用してデータを保持する利点は、データベースに非常に負荷をかけないという事実です。データベースは、データベースとテーブルに接続するときと同じように、単一のエンティティです。何百万ものページがあれば、物事が複雑になることがあります。

一方、セッション配列にアイテムを格納すると、それぞれ独自の別個のエンティティである小さなファイルが多数あり、それぞれ特定の訪問者がページビューごとに一度だけアクセスします。

セッションファイルも小さくなり、毎回簡単に取得できます。データベースでは、多くのレコードを検索しなければなりません(多くのユーザーがいる場合)、特定のレコードを見つける必要があります。対照的に、セッションはその特定のセッションの特定のファイルのデータを取得するだけです。


Ryeguyさんが追加したものです。私は非常に助言に対してすべてのレコードを選択してから、適切なユーザーを見つけるためにwhileループを実行します。私はWhereステートメントを見ることをお勧めします。そのため、データベースはユーザーのユーザー名と一致するレコードのみを提供することができます。

関連する問題