人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

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

●質問者: jayz
●カテゴリ:ウェブ制作
✍キーワード:Pear PHP URL オリジナル サンプルソース
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● いのくに
●35ポイント

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();

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

◎質問者からの返答

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

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

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

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


2 ● いのくに
●300ポイント

デフォルトのログイン画面を 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;
}
?>
◎質問者からの返答

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

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

ありがとうございます

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ