PHP 中級 講座

<< regestergolobals ON のとき、クラス... 質問一覧 HTTPSでPHPプログラムから直接フォー... >>

  • 200P
PEAR::Authの認証で別画面に移動すると認証されない

PEAR::Authの認証で認証機能を作成しております。

独自のログインフォームを作成し、ログインするようにしています。
ログインは正常に行われるのですが、別画面に移動すると認証NG($auth->getAuth()がfalse)になってしまいます。

どのような原因が考えられますでしょうか?

尚、セッションを使用する簡単なカウンタープログラムは動作しましたので、セッションは使用できているはずです。

また、サーバ側でsession.save_pathは、「/tmp」に設定しておりますが、セッションファイルも正しく作成されているようでした。

この質問への意見の募集は締め切られ、ポイントは既に配分されました。
意見を投稿することはできますが、ポイントを受け取ることはできません。

QPEAR::Authの認証で別画面に移動すると認証されない yasu00000  [08月30日 16時50分] 
┣Re:PEAR::Authの認証で別画面に移動すると認証されない turifromvip  [08月30日 17時00分] 
┃┗Re[2]: yasu00000  [08月30日 17時19分] 
┣Re:PEAR::Authの認証で別画面に移動すると認証されない kusyukusyu  [08月30日 22時15分] 
┃┗Re[2]: yasu00000  [08月30日 23時22分] 
┗Re:PEAR::Authの認証で別画面に移動すると認証されない yasu00000  [09月01日 03時09分] 

コメント一覧

並び替え( ツリー順 / 投稿順[降順] / 投稿順[昇順]

Re:PEAR::Authの認証で別画面に移動すると認証されない

>PEAR::Authの認証で認証機能を作成しております。
>
>独自のログインフォームを作成し、ログインするようにしています。
>ログインは正常に行われるのですが、別画面に移動すると認証NG($auth->getAuth()がfalse)になってしまいます。
>
>どのような原因が考えられますでしょうか?
>
>尚、セッションを使用する簡単なカウンタープログラムは動作しましたので、セッションは使用できているはずです。
>
>また、サーバ側でsession.save_pathは、「/tmp」に設定しておりますが、セッションファイルも正しく作成されているようでした。
ログインが正常に行われていないのではないでしょうか?
何をもってログインが正常に行われているとしていますか?

Re[2]:

> ログインが正常に行われていないのではないでしょうか?

> 何をもってログインが正常に行われているとしていますか?
$auth->getAuth()がtrueになったことをもってログインが行われたとしています。
具体的には、以下のような処理で、リダイレクトされずに、$smarty->display('hoge.tpl');で意図した画面が表示されています。
if (! $auth->getAuth()) {
header("Location: {$url}");
}
$smarty->display('hoge.tpl');
($authは、PEAR::Authのインスタンス)

しかし、そのページの別の画面へのリンクを辿ると、リンク先ページの以下のような処理でログイン画面へリダイレクトされてしまいます。
if (! $auth->getAuth()) {
header("Location: login.php");
}

Re:PEAR::Authの認証で別画面に移動すると認証されない

おそらく原因はheader()関数でのリダイレクトの後、exitで終了処理をしていないからではないでしょうか。

認証OKとなっていたのは実はリダイレクト後にexitをしていなかったのでそのまま処理が継続され、結果的に認証OKの画面が表示されるので正常にログインできたように見えていたのだと思います。


>PEAR::Authの認証で認証機能を作成しております。
>
>独自のログインフォームを作成し、ログインするようにしています。
>ログインは正常に行われるのですが、別画面に移動すると認証NG($auth->getAuth()がfalse)になってしまいます。
>
>どのような原因が考えられますでしょうか?
>
>尚、セッションを使用する簡単なカウンタープログラムは動作しましたので、セッションは使用できているはずです。
>
>また、サーバ側でsession.save_pathは、「/tmp」に設定しておりますが、セッションファイルも正しく作成されているようでした。

Re[2]:

>おそらく原因はheader()関数でのリダイレクトの後、exitで終了処理をしていないからではないでしょうか。
確かにリダイレクト後にexitしていませんでしたが、exit処理を入れても変わりありませんでした。

Re:PEAR::Authの認証で別画面に移動すると認証されない

自己解決しました。

PHPのバージョンが4.3.2であった為、Auth::setAuth();の
session_regenerate_id(true);
が原因で正常に動作できていませんでした。

従って、PHPをバージョンアップすることにより、解決しました。
regestergolobals ON のとき、クラス... 質問一覧 HTTPSでPHPプログラムから直接フォー...