PHPで認証システムを作成しており、認証にはPEAR AUTHを使っています

ログイン用の画面をオリジナルで作成しその関数をlogin_screenとしていますが
ログインぺージとは違うページにもログインフォームを設置したい場所があります
ログインフォームを設置するのは簡単なのですが、そのページからログインした場合の移動先URLを通常のログインページとは違うページに遷移させたいのですがこのような場合はどのようにしたらよいでしょうか

サンプルソースを示していただけると助かります
一番参考になった回答をいただけた方に300P差し上げます
よろしくお願いします

回答の条件
  • 1人2回まで
  • 登録:2007/06/08 13:58:04
  • 終了:2007/06/08 17:29:52

回答(2件)

id:inokuni No.1

いのくに回答回数1343ベストアンサー獲得回数212007/06/08 14:30:21

ポイント35pt

header 関数を使った Location ヘッダーで認証後のリダイレクト先URLを記述すれば良いかと思います。

下記の例では http://www.example.com/pathto/ へリダイレクトされるようになります。

<?php
require_once "Auth.php";

function login_screen($username = null, $status = null, &amp;$auth = null){
	echo "<form method=\"post\" action=\"test.php\">";
	echo "<input type=\"text\" name=\"username\">";
	echo "<input type=\"password\" name=\"password\">";
	echo "<input type=\"submit\">";
	echo "</form>";
}

$options = array('dsn' => "mysql://user:password@localhost/database");
$a = new Auth("DB", $options, "loginFunction");

$a->start();

if ($a->checkAuth()) {
	header("Location: http://www.example.com/pathto/");
	exit;
}
?>

尚、リダイレクト先URLでも、

require_once "Auth.php";
$options = array('dsn' => "mysql://user:password@localhost/database");
$a = new Auth("DB", $options, "loginFunction");
$a->start();

は必要なのでお忘れ無く。

id:jayz

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

しかしながら最初の質問で書きましたlogin_functionという関数はデフォルトの

ログイン画面であり、今回の質問ではデフォルトのログイン画面以外の場所に

新たにログインフォームを設置し、そこからログインした場合の遷移先をデフォルトのログイン画面とは違う遷移先にしたいということなのです(デフォルトのログインフォームと新たに設置したフォームでそれぞれ別の遷移先を指定したい)

2007/06/08 16:18:08
id:inokuni No.2

いのくに回答回数1343ベストアンサー獲得回数212007/06/08 16:34:22

ポイント300pt

デフォルトのログイン画面を login_screen で、

新たなログイン画面を login_screen2 で設定しています。


<input type="hidden" name="form_num"> タグでログイン画面の種類を渡すようにしています。

$_POST['form_num'] が 2 の時が login_screen2 からログインした場合となるので、

その場合にのみ heder 関数で Location で指定した http://www.example.com/pathto/ へ

リダイレクトされるようになります。

<?php
require_once "Auth.php";

$options = array('dsn' => "mysql://user:password@localhost/database");

function login_screen($username = null, $status = null, &amp;$auth = null){
	echo "<form method=\"post\" action=\"test.php\">";
	echo "<input type=\"text\" name=\"username\">";
	echo "<input type=\"password\" name=\"password\">";
	echo "<input type=\"submit\">";
	echo "<input type=\"hidden\" name=\"form_num\" value=\"1\">";
	echo "</form>";
}

$a = new Auth("DB", $options, "login_screen");
$a->start();

function login_screen2($username = null, $status = null, &amp;$auth = null){
	echo "<form method=\"post\" action=\"test.php\">";
	echo "<input type=\"text\" name=\"username\">";
	echo "<input type=\"password\" name=\"password\">";
	echo "<input type=\"submit\">";
	echo "<input type=\"hidden\" name=\"form_num\" value=\"2\">";
	echo "</form>";
}

$a2 = new Auth("DB", $options, "login_screen2");
$a2->start();

if ($a2->checkAuth() &amp;&amp; ($_POST['form_num'] == "2")) {
	header("Location: http://www.example.com/pathto/");
	exit;
}
?>
id:jayz

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

こちらの思うような動作ができました

ありがとうございます

2007/06/08 17:29:03

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

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

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

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

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません