PHPについての質問です。PEAR::Authを使用して簡単なログイン画面を作成しました。


下記ソースがcontents.phpの内容です。
<?php
ini_set("include_path", '/home/***/public_html/PEAR/PEAR' . PATH_SEPARATOR . ini_get("include_path"));

require_once("Auth/Auth.php");
function loginFunction($usr,$status){
require_once("loginForm.php");
}
$params=array(
"dsn"=>"mysql://***:***@localhost/***",
"table"=>"tblarchitect",
"usernamecol"=>"username",
"passwordcol"=>"password");
$myAuth=new Auth("DB", $params, "loginFunction");
$myAuth->start();
if($myAuth->getAuth()){

print("認証済みです。");
}
?>

contents.phpを実行するとログインフォームを提供しているLoginForm.phpを呼び出します。
その後認証が成功したら「認証済みです。」と表示されますが、これを認証が成功したら指定したPHPファイルやHTMLを表示させるように変更したいのですがどのように記述すれば良いのでしょうか?
どうかご教授お願いします。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2006/11/12 18:31:47
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:kakicg No.3

回答回数44ベストアンサー獲得回数3

ポイント200pt

PearのAuth自体がセッション管理を行っているので、認証をかけたい全てのページに同様のコードを書いていくのが本筋ではないかと思います。つまり

$myAuth->start();
if($myAuth->getAuth()){
?>
ここにHTMLを入れる
<?php
}

という書き方のなるのではないかと思います。一回認証が通ればセッションがタイムアウトになるまではログインページは読み出されず認証された状態で表示されるようになりますよ。

id:moks

回答ありがとうございます。ご指摘のとおり変更したところ理想とする動きになりました。大変助かりました。

2006/11/12 18:28:55

その他の回答2件)

id:qwenty No.1

回答回数19ベストアンサー獲得回数1

ポイント100pt

もっとも簡単な方法ですが、

if($myAuth->getAuth()){

}

内に

http://neta.ywcafe.net/000372.html

を実行して頂ければ可能かと思います。

指定されたページへジャンプさせることも可能ですが、その場合ログイン情報を維持するための記述が必要になります。

id:moks

回答ありがとうございます。

インクルードすることで可能になりました。ご指摘のようにインクルードされた最初のページより先のコンテンツはIDとPASSで認証した意味が無くなっていました。先のコンテンツに対してもログイン情報を維持するためにはどのような記述が必要になるのでしょうか?申し訳ないですが再度返答していただくと助かります。

2006/11/12 16:21:53
id:qwenty No.2

回答回数19ベストアンサー獲得回数1

ポイント100pt

セッションを応用したものになるかと存じます。

http://masago.kir.jp/php20030927.php

http://www.stackasterisk.jp/tech/php/php03_06.jsp

http://kamakura.cool.ne.jp/oppama/oswa/phpsession.html

セッションにてログイン状態を保存し、別ページにおいてもセッションに保存された情報を呼び出すことで、ログイン状態の維持が可能になるかと思います。

id:moks

回答ありがとうございました。セッション管理についてはリンク先を参考にして試してみます。

2006/11/12 18:30:09
id:kakicg No.3

回答回数44ベストアンサー獲得回数3ここでベストアンサー

ポイント200pt

PearのAuth自体がセッション管理を行っているので、認証をかけたい全てのページに同様のコードを書いていくのが本筋ではないかと思います。つまり

$myAuth->start();
if($myAuth->getAuth()){
?>
ここにHTMLを入れる
<?php
}

という書き方のなるのではないかと思います。一回認証が通ればセッションがタイムアウトになるまではログインページは読み出されず認証された状態で表示されるようになりますよ。

id:moks

回答ありがとうございます。ご指摘のとおり変更したところ理想とする動きになりました。大変助かりました。

2006/11/12 18:28:55

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません