2006年7月 8日

[PHP-users 29658] Re:sessionを使った認証フォームに関して


さわだです。
検証取っていない上にビール片手なので当たっている保証はないです。

とりあえず、この順番っておかしくないですか?

> if(!$_SESSION[username]){
> echo "認証が必要です。ユーザー名とパスワードを入力して下さい。";

> authform();
> }
> //ユーザ名とパスワードが送られてきた場合は認証
> if($username <> "" && $passwd <> ""){

いったいどのタイミングで$_SESSIONに値が代入されるのでしょう?

- formに入力
- formからPHPにPOSTで値が渡る
- セッションに値が無い
- formを表示

を永遠に繰り返す気がします。

- formに入力
- PHPにPOSTで渡る
- セッションに値が無い
- ID/PWがPOSTされていない
- エラー(form表示)
- ID/PWがPOSTされてるなら、POSTされたものを検証
- OKならセッションにセット
- NGならエラー

にしないといけなくないですか?

あと、細かいところ。

- マニュアルのこの部分を見て、

http://jp.php.net/manual/ja/function.session-start.php

> 注意: クッキーに基づくセッションを使用している場合、ブラウザに何か出力
> を行う前にsession_start()をコールする必要があります。

何か思い当たる節はありませんか?
(でもこれは直接の原因じゃないかも、出力バッファの設定とかも絡みますか)

- session_start() って、2回呼ばれてませんか?

- if(!$_SESSION[username]) って、大丈夫ですか?
 if( !isset($_SESSION['username']) ) とかじゃないですか?
 これだと、" Notice: Use of undefined constant username " みたいに言われないです?
 (これも設定なのかな)

- 特に理由が無いなら、Register_globalsはOffにするべきだと思います。
- Setoさんも仰ってますが、バージョン更新できるならした方が良いと思います。

--
Shu Sawada
http://luna.lunanet.gr.jp/
http://www.cycleof5th.com/
_______________________________________________
PHP-users mailing list PHP-users@xxxxx
http://ns1.php.gr.jp/mailman/listinfo/php-users
PHP初心者のためのページ - 質問する前にはこちらをお読みください
http://www.php.gr.jp/php/novice.php3

投稿者 xml-rpc : 2006年7月 8日 01:19
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/39166
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。