[PHP-users 28450] Re: ゲストログインについて
satoshi@try-square.co.jp
satoshi @ try-square.co.jp
2006年 2月 17日 (金) 16:10:26 JST
藤本です。
Tadashi Jokagi <ml @ elf.no-ip.org>さん:
> いわゆる「ログイン手続き」をするとアカウント情報(と必要な情報)だけ
> 書き換えるということにしておけば,実質「常にログインしている」と仮
> 定できるので,いわゆる「ログインしている・していない」という概念は
> かなり薄くなって実装しやすいんじゃないでしょうか?
その通りですね。
私なら、ユーザ情報テーブルを例えば次のように設計します。
guest_id テキスト型 サイト訪問時に与えるID
user_id テキスト型 ログイン時に与えるID(※認証した上で)
page 数値型 閲覧中のページID
cart 数値型 利用中のカートID
items 数値型 選択中アイテムへの参照ID
・・・
その他、ユーザのサイト閲覧状況を記述する全てのデータ
ここで、guest_idとuser_idの区別が重要ですね。
ログインしていても、していなくても、サイト訪問時にまずはゲストIDを
与えてあげます。
そしてユーザがサイト内で何かするたびに、いつでもそれを再現できる程度
の情報を、上記テーブルに記録します。(もちろん、買い物カゴの中身とか)
これは、ゲストIDにひもづいて記録を行います。
ログインが必要な場面になったら、ログインフォームでやり取りしてやる
のは、このguest_idのみというわけです。
ログインに成功したら、そのguest_idのカラムに対してuser_idを与えて
やればいいですね。
>
> #その guest が複数箇所で同時にアクセスされるということを頭に入れておか
> ないといけないですけど
>
> satoshi @ try-square.co.jpさんの「[PHP-users 28448] Re: ゲストログインについて」から
> >大量の情報を、全てそのままGETやPOSTやSESSIONで引き回すべきでは
> >ありません。
> >ユーザの作業情報はサーバ上で常に管理しておき、クライアントとの通信は
> >小さなIDのみにするべきです。
>
> SESSION もクライアントとの通信は基本的に小さな ID のみじゃないん
> でしょうか?
例えば上記でいう、pageやcartやitemsといった全ての要素を
ログイン画面で引き回すべきではないですね、という意味でした。
<input type="hidden" name="page" value="1">
<input type="hidden" name="cart" value="1">
<input type="hidden" name="items" value="1">
・・・
まあPOSTやGETでは丸見えなので、引き回す方法にも工夫が必要です。
いずれにせよ、引き回す情報は最小限にするべきですね。
以上
----
藤本 悟司
株式会社トライスクエア
〒104-0045 東京都中央区築地3-5-13北村ビル2F
TEL: 03-5148-3345 / FAX: 03-5148-3346
Mobile: 070-6668-4644
E-Mail: satoshi @ try-square.co.jp
WEB: http://www.try-square.co.jp/
Key fingerprint = 95F2 6B3D 0B8C 374A 5E67 CA02 F28F 703A C1A9 8346
PHP-users メーリングリストの案内