PEAR::Authの認証で別画面に移動すると認証されない - PHPプロ!Q&A掲示板

153

  • 200P

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

質問日時 / 2006年8月30日 16:50    回答数 / 5件

Questioner:  yasu00000  このエントリーをはてなブックマークに追加 

キーワード / pear    auth    認証   

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

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

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

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

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

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



ツリー一覧

┣A01turifromvip>PEAR::Authの認証で認証機能を作成しております。 >
┃┗A01-1yasu00000> ログインが正常に行われていないのではないでしょう
┣A02kusyukusyuおそらく原因はheader()関数でのリダイレクトの後、ex
┃┗A02-1yasu00000>おそらく原因はheader()関数でのリダイレクトの後、e
┗A03yasu00000自己解決しました。 PHPのバージョンが4.3.2であっ

回答一覧

並び替え:

A01
answererturifromvip [8月30日 17:00]

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

この意見に回答する

ツリーへ TOPへ

A01-1
replyeryasu00000 [8月30日 17:19]

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

> 何をもってログインが正常に行われているとしていますか?
$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");
}

この意見に回答する

ツリーへ TOPへ

A02
answererkusyukusyu [8月30日 22:15]

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

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


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

この意見に回答する

ツリーへ TOPへ

A02-1
replyeryasu00000 [8月30日 23:22]

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

この意見に回答する

ツリーへ TOPへ

A03
answereryasu00000 [9月1日 03:09]

自己解決しました。

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

従って、PHPをバージョンアップすることにより、解決しました。

この意見に回答する

ツリーへ TOPへ

<<質問一覧へ



Pick Up Q&A

Q
PHPでのRSS表示までの流れについて
 このエントリーをはてなブックマークに追加 
A
get_headers()だとフィードを重複取得したり、宜しく無い様なので、 この件は忘れて、フィード内の以下の値をチェックしてください。 RSS1.0: channel>d:date RSS2.0: channel>lastBuildDate ATOM: modifi...

>>続きを読む

phpファイルをどう分けるか、といった問題は経験のある人に相談すると安心できますね。

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)