電子書籍の厳選無料作品が豊富!

現在、PEAR::Authを利用して認証処理を作成しております。
質問させていただきたい内容は、
AuthクラスのgetAuthメソッドについてです。

まず、Authクラスのインスタンスを生成し、
start()メソッドを実行して認証を行い、
その認証の結果をgetAuthメソッドによって
取得しております。

次に、getAuthメソッドにより得た結果を
IF文で判別して、結果がTRUEの場合は処理を続行し、
結果がFALSEの場合はログイン画面に戻るように
制御しようとしたところ、
FALSEの場合の制御が思うように動作しませんでした。

以下に、ソースを記述いたします。

login_check.php
*************************************************
<?php
require_once("Auth/Auth.php");

$params = array(
"dsn" => "pgsql://postgres:postgres@win/db",
"table" => "test_table",
"usernamecol" => "test_user",
"passwordcol" => "test_passwd",
"cryptType" => "none",
);

// インスタンス生成
$auth = new Auth("DB", $params , "LoginFuntion");


// 認証開始
$auth->start();

// 結果を判別
if (!$auth->getAuth()) {
// 結果がFALSEだったらログイン画面に戻る
header("Location: ./login.php");
exit;

} else {
// 結果がTRUEであれば処理を続行



}

?>


$auth->getAuth()の使い方が違うのかも知れませんが、
Authのソースを見ても分かりませんでした。
どなたか、「PEAR::Auth認証」の結果による判別に
ついてお教え下さい。。。

※今回は、ログイン画面とチェックPHPを分けております。

ログイン画面はHTMLで、チェックPHPにAuthを利用しております。
この利用の仕方が既に間違っているのでしょうか?
併せてお教えいただければと思います。

A 回答 (1件)

思いつく原因を2つ挙げてみました。



原因その1:

http://pear.php.net/manual/ja/package.authentica …
に以下のような記述があります。
---
現在のところ、register_globals=onの場合、以下のコードは使用できません。
<?php
$auth = new Auth(...);
?>
その理由は、$authが、PEAR::Auth内部で使用されている セッション変数名であるためです。
---

原因その2:
"cryptType" => "none"を指定していますが、
test_tableテーブルのtest_passwdフィールドは平文ですか?暗号化しているのであれば、"none"では上手く機能しません。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!