• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:別画面から遷移してきた時はDBを読み、それ以外のときはPHP_SELFを使いたい)

別画面から遷移してきた場合の処理方法

このQ&Aのポイント
  • 別画面から遷移してきた場合は、DBを読み込んでプロセスを経てMySQLから読み込んだ$nameを表示する。
  • PHP_SELFでなく別画面から遷移してきた場合の判断方法についての解説がありません。
  • 冒頭の#3さんのサンプルのvalue="{$_POST["name"]}"を分岐させて処理する方法についての説明がありません。

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

今回の場合はとりあえず$_POST["reg"]の値を見て 判断するのが妥当かと思います。 別の画面から来た場合はregの値がヌルになるはず。 まぁ簡易的にregを振ってとんでくるような人がいても そんなに気にするようなもんでもないですし。 またリンク元のページを見る場合にはよくリファラーを 見ますね。 $_SERVER["HTTP_REFERER"]の値を拾ってみてください。 一部リファラーを返さない場合もありますので注意が 必要です。 またまたこれも偽装しようと思えばできるのであまり 信頼しすぎるのは禁物ですが、そこは運用面でカバー してください。

litton101
質問者

お礼

<td valign="top"><input type="text" size="55" name="name" value="{$_POST["name"]}">{$errStr["name"]}</td> の「value="{$_POST["name"]}"」のところを value="( $_POST["reg"] == "" ? $name : {$_POST["name"]} )"  や、 value="( is_null ($_POST["reg"]) ? $name : {$_POST["name"]} )"  などと としましたが、 Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in とエラーになります。「print <<<eof ~ eof;」の中では 分岐ができないのかなと、一旦これをやめてみましたが、関係ないみたいです。 ええっと・・対策ありますでしょうか・・ それと、 開発環境はXP(SP2)+IIS5.1 本番環境はFreeBSD4.7+Apache1.3.37、と異なりますが、 ソースの冒頭に echo $_SERVER["HTTP_REFERER"]; と記述してみたら、飛んでくる前のページのURLを返してきました。

litton101
質問者

補足

すみません、身勝手に用件だけ書いて御礼を書いてませんでした、 度々のアドバイス、本当にありがとうございます。

その他の回答 (1)

noname#185101
noname#185101
回答No.2

元質問者です。とりあえず、 print <<< eofをやめてPHPを閉じて、 タグ混在型にしたら動きました・・・ 大変お騒がせいたしました。 <input type="text" size="55" name="name" value="<?php if($_POST["reg"]=="") { echo $db_name; } else { echo $_POST["name"]; } ?>"></td> yamabejpさん、ありがとうございました。

関連するQ&A