• ベストアンサー

formタグのactionパラメータで自分自身を指定

既存のHTMLプログラムを管理することになりました。 xxxx.phpというファイルのなかで、 <form name="xxx_form" method="post" action="xxxx.php"> という感じで、xxxx.phpのなかで同名のファイルをactionに指定しているのですが、最初に開いたxxxx.phpと、actionで開いたxxxx.phpでは表示内容が異なっているのです。(具体的には、初めとaction後ではリストの内容等が更新されている。) ソースを表示してみると、確かに異なっています(リスト内容の指定部分が異なっている)。しかし、アドレスは同じです。 この動作の仕組みが分かりません。 分かる方、ご指導よろしくお願いします。

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

  • ベストアンサー
  • partita
  • ベストアンサー率29% (125/427)
回答No.3

#1です。 勘違いしているかもしれないので、補足です。 >ソースを表示してみると、確かに異なっています これはサーバー上でソースを見ていませんか? (ブラウザで右クリック→ソースを見る、など) それならば、単にPHPが生成したHTMLを見ているだけで、もとのPHPを見ていることにはなりませんよ。 私が言ったのはもとのPHPファイルの記述のことです。

Poko-08
質問者

お礼

元のソース、見つかりました。 ありがとうございました。

Poko-08
質問者

補足

おっしゃる通りです。確認してみます。

その他の回答 (2)

回答No.2

xxxx.php がリクエストされた時にフォームから送信されたデータを持っているかどうかで処理を分岐させています。場合によっては、隠しフィールドに処理を分岐するためのパラメータをセットし、フォームの送信によって送られたパラメータの値によって、複数の処理に分岐させることもあります。これにより、入力画面の書き出し→確認画面の書き出し→メール送信といった異なった処理をxxxx.phpというひとつのプログラムでこなすことができます。プログラムの書き方は幾通りもありますので、この場で、この部分と指摘することはできませんが、コードを見ればわかります。おおむね「$_POST」と書かれている部分がフォームによってPOSTされたデータが格納されている配列になりますので、どのように処理されていくかを追ってみるとわかるかも知れません。if、または switch と書かれた部分が条件分岐のところです。また、フォームの隠しフィールドの名前や値なども追ってみるといいかも知れません。

Poko-08
質問者

お礼

詳しく説明していただき、ありがとうございました。

Poko-08
質問者

補足

POSTや分岐のコードは無いようです。 どちらかといえば、同じファイル名で、フォームの値によって違うファイルを呼び出しているような感じです。現在、クライアント側のPCからチェックしている状態なので、一度サーバのファイル構成を調べてみます。

  • partita
  • ベストアンサー率29% (125/427)
回答No.1

<form method="post" action="<?=$_SERVER['PHP_SELF']?>"> と、「isset」という関数を利用しているのでは?

Poko-08
質問者

お礼

早速回答して頂き、ありがとうございます。

Poko-08
質問者

補足

<?=$_SERVER['PHP_SELF']?>の部分は、直にファイル名です。 issetという関数は見当たりませんでした。

関連するQ&A

専門家に質問してみよう