[PHP-users 29658] Re: sessionを使った認証フォームに関して
Shu Sawada
luna @ lunanet.gr.jp
2006年 7月 8日 (土) 01:19:59 JST
さわだです。
検証取っていない上にビール片手なので当たっている保証はないです。
とりあえず、この順番っておかしくないですか?
> 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 メーリングリストの案内