- ベストアンサー
URLの変わらないページをPHPでつくるには
URLの変わらないページをたまにみかけますが、どういう仕組みになっているのでしょうか? 仮にこういうURLでアクセスしたとして、 http://host.com/saite1/index.php 実行したら http://host.com/saite1/ に変わる 何か機能のボタンを押して画面の表現が変わっても URLは http://host.com/saite1/ 一連の同じ機能範囲の動作は常に同じURLになっているWEBページをたまにみかけます。 これはどのような仕組みになっているのでしょうか? PHPでそれは実現できるのでしょうか? また、「あーそれ、・・・だからやんない方がいいよ」的な意見もよろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
全ての画面遷移がindex.php(あるいはサーバーで設定されたtopファイル)を通じて行われる作りのことを「フロントコントローラー」と呼びます。制御方法は様々ですが、下の方が仰られているとおり、何らかのパラメタをindex.phpに返すことで、それをif文なりswitch文なりで制御して、画面遷移を行います。 下の回答の方はPOSTまたはGETでと仰っておられますが、 GETでパラメタを渡すと http://host.com/saite1/index.php?xx=xx のように後ろにパラメタが付いてきますので、POSTでのみ可能です。
その他の回答 (2)
- めとろいと(@naktak)
- ベストアンサー率36% (785/2139)
POSTデータ、GETデータがある時、IsSet()を利用する事で実現可能です。 【index.php】 <?php if (isset($_POST['data'])) { print("2ページ目"); } else { print <<< page1 1ページ目<br> <form method="post" action="index.php"> <input type="text" name="data" value="1"> <input type="submit" value="送信"> page1; } ?> 但し、そういう事が出来るからと言って、沢山のページを1ファイルに記述すると 当然の如く解読が煩雑になってきます。 沢山のページを1ファイルで記述したい場合、 判定を記述した後、ページ毎に関数化させた関数を呼び出したり 外部ファイルをincludeさせたりする事で多少は分かり易くなります。
お礼
ありがとうございます。参考になりました。
- yambejp
- ベストアンサー率51% (3827/7415)
「URLの変わらないページ」の説明が今ひとつ 理解できませんが、index.phpが省略できるかどうか? という質問だと理解すれば、そういう設定さえして おけばできます。はっきりいえばphpは関係ありません。 httpサーバーの機能と考えて結構です。 ダラダラ長いURLをきらういわゆるアクセシビリティ という考え方ですね。 機能のボタンを押して画面の表現が変わっても、 urlが変わらない・・・ これは大きく3つ考えられます。 (1)FORMをPOST方式でPHPに投げているケース。 PHPはプログラムですから、パラメータをもらえば それにみあった別の表示をすることができます。 (2)DHTMLを使っているケース。 HTMLはダイナミックに表示を操作することが できます。同じページ内で、大幅に文章や画像を 入れ替えれば、おっしゃるようなことができます。 またajaxと総称される方式でPHPと組合せて使う こともできます。 (3)フレームを使うケース。 フレームをつかったページの場合、外枠と、 中身のhtmlが別々なので、表示されるurlは 変更されません。
お礼
ありがとうございます。参考になりました。
お礼
ありがとうございます。 「フロントコントローラー」ですか、検索してみます。