【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください

MySQLとPHPを使ったWebシステムの勉強をしているPHP初心者です。
現在ログイン認証ページを作っており、

(1)IDとパスワードをフォームで入力
    ↓
(2)action='$PHP_SELF'で同じページにリダイレクト
    ↓
(3)認証を確認し次第header関数で自動的に別のページに飛ばす
    ↓
(4)IDに応じてページの内容を変える。

という風にしています。(3)の部分のソースコードは(かなり省いてはいますが)以下の通りです。

if (session_is_registered($ADMSESS)) {
header("location: admnew.php");
}


ここで、(3)までのページで使っていた変数を(4)のページでも受け取り、そのまま使いたいと思っているのですが、どうしたらいいでしょうか。今は(4)を開いたとき、どのようなIDでログインしても同じページが表示されています。

分かりにくいですね、、HTMLベースのフォームだとaction=POSTを用いて飛ばした変数を $変数 = $_POST['変数'];として受け取ることが出来ますが、PHPで同じことをやろうとするとどうなるのか、ということです。

分かる方いましたら、どうか御回答宜しくお願いします。

A 回答 (1件)

>分かりにくいですね、、HTMLベースのフォームだとaction=POSTを用いて飛ばした変数を $変数 = $_POST['変数'];として受け取ることが出来ますが、PHPで同じことをやろうとするとどうなるのか、ということです。


正確には「HTTPのLocationヘッダで遷移する際にPOSTを使えるか」ということですかね。

基本的にGETメソッド以外でリダイレクトすることはHTTPの仕様上で制限されています。(RFC 2616)
なので、もしリダイレクトで実装するのであれば
URL内にパラメータを記述してGETで渡すしか方法はありません。
が、セキュリティ上それは問題があるのは言わずもがな。

admnew.phpをrequireするか、変数をすべてsessionに突っ込むかしたほうがよいでしょう。
    • good
    • 0
この回答へのお礼

session変数で定義することで何とか解決できました。
回答ありがとうございました。

お礼日時:2007/10/22 15:09

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


おすすめ情報