• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:phpファイルの命令実行順番について)

PHPファイルの命令実行順番について

mikemike7の回答

  • mikemike7
  • ベストアンサー率87% (97/111)
回答No.5

>「input type="submit」で出来たボタンを押すことによりactionで指定したファイルが実行され まあ、そうなんですが、その場で実行されるわけではなく、 通常のHTMLを使ったFORMではactionで指定したファイルに 移動してアクションを起こします。 <form action="form.php" method="get"> <input type="text" name="email" value=""> <input type="submit" value="実行"> </form> とFORMを記載した場合には、アクセスしたユーザーがブラウザ上で実行ボタンを押したら、まずアクセスしたユーザーはform.phpに移動して、form.phpからの結果を待ちます。 form.php内に<?php ~ ?>と記載している場合には、 ここからここまでがPHPで実行する箇所ですよ。と指令です。 そこに書かれている内容にそってサーバー上で処理が行われます。 処理が完了すれば、サーバーがHTMLなどで結果を出力しアクセスしたユーザーに渡します。 この時点でアクションは終了です。 >他にもactionで指定したファイルを実行させる、トリガーのようなものはありますか? どういったものを目的としているのでしょう。 サーバー上で? もしくはユーザーのアクションで? 実行させるタイミングなどは、PHP側では制御できません。 たとえば、フォーム値を読み取ってPHPを経由せずにエラー告知などをしたい場合には、JavaScriptなどで処理します。 エラーがある場合には、エラー告知をし、フォームを送信させなくしたりできます。 JavaScriptはPHPのようにサーバー上で起動するものではなく、ブラウザ上で起動するプログラムですから、 一般的な通信を行わないJavaScriptなら、画面遷移をしない(PHPを呼び出さない)でブラウザにアクションを起こさせることは可能です。 また、通信を行うJavaScriptの場合では、画面遷移をしないでサーバーと通信を行い、アクションを変えることも可能です。 たとえば、ユーザーIDを登録するとします。 そのIDはユニークなもので、既に使われているかどうかはサーバー上でしかわかりません。 この場合、通常ならサーバーのプログラムにフォームなどを使ってアクセス(移動)し、そこで判定ということになりますが、JavaScriptによる通信で処理をさせる場合は、表示しているページ上でJavaScriptと連携(通信)して、IDが使われていないかチェック。 使われていれば、警告してフォームを起動させない。 使われていなければ、フォームを送信。 ということもできます。 この作業はユーザーの目に見えないところで行われます。 とりあえずは、いろいろ調べながら試してみるのが一番ですね。 知識がないと試せないし、知識だけあっても試さないとわからないことも多いと思いますので。

Koh1111
質問者

お礼

mikemike7様 もしよろしければ以下の認識で合っているか、確認していただければ幸いです。 ボタンを押した後の動作では、ブラウザがactionで指定したファイルは何かという情報とinputされた情報をサーバーに伝え、サーバー上で処理(この例だと、if(@$_POST["text1"])により、「作成されたファイル」というリンクを出すか出さないか等)し、ブラウザには表示するHTML情報を渡し、ブラウザ上では表示するだけで処理はしない、ということですね。 actionで指定したファイルを実行させるトリガーという表現を使ったのは、ブラウザからサーバーへの要求を投げるボタンのようなものが、他にもあるのかな、と思い質問させていただきました。こちら、興味本位で聞いたものでしたので、私の方で学習を進めていきます。 実行タイミングはPHP側では制御できない、というのは実行タイミング(ボタンを押す)のはユーザーがブラウザで行うものであるから、解らないという認識で合っているでしょうか? JavaScriptについての学習も平行して行っていますので、そちらの中でJavaScriptの知識も深めていきたいと思います。

関連するQ&A

  • PHPでフォームからの送信

    PHPでフォームからデータを送信する方法について教えてください。例えばPHPファイルの中に下の様にフォームを作成して、送信ボタンを2つ作ります。一つのボタンをクリックすると全てのフォームの情報が送信されてしまいますが、独立して送信できるようにはできないのでしょうか。簡単にでもできるかできないかを教えていただけましたら、あとは自分でなんとかがんばりますので、どなたか教えていただけれますと幸いです。宜しくお願いします。 <form action="abc.php" method="post"> AAA:<input type="text" name="simei"> BBB:<input type="password" name="pass"> <input type="submit" value="送信"> </form> <form action="abc.php" method="post"> CCC:<input type="text" name="simei"> DDD:<input type="text" name="pass"> <input type="submit" value="送信"> </form>

    • ベストアンサー
    • PHP
  • ディレクトリ作成

    ユーザが入力した名前のファイルを作成するプログラムを作っているのですが、うまくいきません。 <html> <head> <title>データ受け渡し</title> </head> <body> <?php echo "<p>入力内容:".@$_POST["text1"]; $dir = /dir/$_POST["text1"]; mkdir($dir, 0777); ?> <form method="POST" action="<?php echo $_SERVER["PHP_SELF"]?>"> <table> <tr> <td><input type="text" name="text1"></td> <td><input type="submit" value="送信" name="sub1"></td> </tr> </table> </form> </body> </html> サーバの dir というディレクトリ内に 入力された名前のファイルを作りたいのですが、エラーが出てしまいます。 よろしくお願いします。

    • 締切済み
    • PHP
  • ファイルアップロードについて

    ファイルアップロードについて質問させて下さい。 ID、ファイルアップロードの機能の2つがあります。 ファイルを指定し、submitボタンを押下すると「b.php」に遷移します。 ファイルをアップロードした場合には遷移をせず ID、画像パスが入力されている場合のみ「b.php」に遷移したいのです。 入力チェックはjavascriptで行っていますが、その場合には「action=""」として javascript側で遷移するしか方法は無いのでしょうか? ---a.php---- <form enctype="multipart/form-data" action="b.php" method="post" name="a"> <input type="hidden" name="MAX_FILE_SIZE" value="50000000" /> <table> <tr> <th>ID</th> <td><input type="text" name="ID" value=""></td> </tr> <tr> <th>画像</th> <td><input type="file" name="img" value=""> <input type="submit" name="upload" value="upload"> </td> </tr> </table> <a href="#" onClick="javascript:check('a');"><img src="button.jpg"></a> </form> お手数ですが、ご教授よろしくお願い致します。

    • ベストアンサー
    • PHP
  • formの中で別のactionをもったsubmitボタンの設置。

    formの中で別のactionをもったsubmitボタンの設置。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP"> <title>sample</title> <script language="JavaScript" type="text/javascript"> <!-- //<クリックした時に実行される関数> //*** 送信画面 function func1(form){ document.form1.text.value =form.text.value; document.form1.file.value =form.file.value; document.form1.dummy.value =form.dummy.value; document.form1.submit(); } //*** ユーザー追加画面 function func2(form){ document.form2.text.value =form.text.value; document.form2.file.value =form.file.value; document.form2.dummy.value =form.dummy.value; document.form2.submit(); } //--> </script> </head> <body class="index"> <form enctype="multipart/form-data"> <table id="table" width="100%"> <tr><th width="10%">テキスト</th><td><input type="text" name="text"> <br /> <div style="text-align:left;"> <input type="button" onClick="func2(this.form)" value="テキスト確認"> </div> </td></tr> <tr><th width="10%">添付</th><td><input type="file" name="file"></td></tr> </table> <div style="text-align:left;"> <input type="button" onClick="func1(this.form)" value="確認"> </div> </form> <!-- sousin.php画面へ --> <form method="post" name="form1" action="sousin.php" enctype="multipart/form-data"> <input type="hidden" name="text"> <input type="hidden" name="file"> <input type="hidden" name="dummy"> </form> <!--- text.php画面へ ---> <form method="post" name="form2" action="text.php" enctype="multipart/form-data"> <input type="hidden" name="text"> <input type="hidden" name="file"> <input type="hidden" name="dummy"> </form> </body> </html> 上記のように記述し、フォームの中に別のactionをもったsubmitボタンを設置しました。 textの内容は渡せるのですが、添付したいファイルを渡すことができません。 添付ファイルも渡せるようにするにはどうすればよいのでしょうか

    • ベストアンサー
    • HTML
  • phpファイルに書いたhtmlソースが表示される

    php側で用意した変数にhtmlタグと合わせて $tempHTML=<tr><td>$data1</td><td>$data2</td></tr>"; のように文字列を代入して、表形式でデータを表示させようとしているのですが、 なぜかhtml部分のソースのみがブラウザに表示されてしまいます。 ファイル名"search_result.php" --------------------------- <html> <body> <script type="text/javascript"><!-- function dataFunc(txt){ alert("search_result_data"); document.search_result.search_result_data.value = txt; } --></script> </head> <body> <form name ="search_result" method="post action="./search_result_test.php"> <input type="hidden" name="search_result_data" value=""></input> </form> <script type="text/php"> <?php 処理の記述 ?> </script> </body> </html> --------------------------- と書いて実行させると、 --------------------------- <html> <body> <script type="text/javascript"><!-- function dataFunc(txt){ alert("search_result_data"); document.search_result.search_result_data.value = txt; } --></script> </head> <body> <form name ="search_result" method="post action="./search_result_test.php"> <input type="hidden" name="search_result_data" value=""></input> </form> <script type="text/php"> </script> </body> </html> --------------------------- と表示され、phpの記述(<?php・・・?>)以外のソースがまるまるブラウザで表示されてしまいます。 しかも肝心の処理結果も表示できません。 どなたか原因が分かる方がいらっしゃったら教えていただけますか?

    • ベストアンサー
    • PHP
  • PHPからPostgresqlに接続するとエラー

    ご質問させて頂きます。 PHPからPostgresqlに接続するという 勉強をしています。 Postgresqlのホストは localhostです。 テーブル名は「aas」 以下の様に書いてみましたが 「書き込み」処理を行うと、 「file://c:\ postgressql\8.2 見つかりません。パスまたはインターネット アドレスが正しいかどうかを確認 し> てください。」 というエラーが出てしまいます。 ご教示して頂けたら幸いです。 --------------------- <tr><td>ID</td><td>氏名</td><td>点数</td></tr> HTML出力部分 <?php PHP開始の合図 $d_base = pg_connect("user=postgres password=3120 dbname=test"); データベースに接続 if($action == post && $sign == '書き込み'){  if($number && $name){   pg_exec($d_base, "insert into aas values('$number','$name')");  } } ・ ・ ・ <P>データベースの内容</P> <P><FORM ACTION=<?php echo $PHP_SELF; ?> METHOD=POST> <INPUT TYPE=HIDDEN NAME=action VALUE=post> ID:<INPUT TYPE=TEXT NAME=number SIZE=5> 氏名:<INPUT TYPE=TEXT NAME=name SIZE=15> 点数:<INPUT TYPE=TEXT NAME=score SIZE=5> <INPUT TYPE=SUBMIT NAME=sign VALUE="書き込み"> ・ ・ ・ ---------------------

    • ベストアンサー
    • PHP
  • 以下のx.phpにアクセスし

    表示された 画面のテキスト入力欄に「\」を入力すると 「\\」が表示されてしまいます。 また、画面のテキスト入力欄に「\\」を入力すると 「\\\\」が表示されてしまいます。 この不都合を解消する手段はあるのでしょうか? つまり、「\」を3個入力すると「\」が6個でなく入力した3個だけ表示されるようにしたいのです。 どうしたらいいでしょうか? x.php: <?='x=['.(isset($_POST['x'])?$_POST['x']:'').']<br/>'?> <form method="post" action="<?=$_SERVER['PHP_SELF']?>"> <input type="text" name="x"/><br/> <input type="submit" value="push"/> </form>

    • ベストアンサー
    • PHP
  • php

    <html> <head> <meta http-equiv="content-type" content="text/html;charset=UTF8;" /> <table border="1"> <form action="for3.php" method="POST"> <tr><th>タイトル<td><input type="text" name="text" size="50"></td></tr> <tr><th>本文<td><textarea name="subject" cols="52" rows="8"></textarea> <tr><td><input type="submit" value="保存 する" /></td><tr> </table> </form> <?php $text = htmlspecialchars($_REQUEST['text']); var_dump($_REQUEST); ?> <?php $text = preg_replace("/\n/","<br />",$text); ?> <?php $file = fopen("sample.txt","r"); fwrite ($file,htmlspecialchars($_POST['text'])); while (!feof($file)) { $data = fgets($file); $line = explode("<>",$data); } fclose($file); ?> タイトルと本文は保存押した後反映されるのですが書き込み日時の文がわかりません汗 タイトル 本文 書き込み日時 タイトル 本文 書き込み日時 このような形で保存していきたいです

    • 締切済み
    • PHP
  • phpのpostについて

    a.phpの値をb.phpにpostしたいのですがうまく値が渡せません post元にはname属性に変数を用いているのですがpost先でnameをどのように指定したらいいかわかりません <a.php> <form action="foo.php" method="POST"> <div id="button"> <input type="submit" name ="PostGo" value="postTime" style="margin-right:30px;" /> </div> <table> <?php for ($data = 1; $data < 5; $data++) { ?> <tr><td> <select name="test<?php echo $data?>"> <option value=1>1 <option value=2>2 <option value=3>3 <option value=4>4 </select> <?php } ?> </table></form> <b.php> <?php for($i=1;$i<5;$i++){ $test =($_POST['test']);←ここの部分のpostをどう指定したらいいかわかりません echo $test; } ?> ※$_POST['test' + $i] これでも取れませんでした

    • ベストアンサー
    • PHP
  • formに複数ボタンを配置し、それぞれのボタンに対して、別の複数の値を

    formに複数ボタンを配置し、それぞれのボタンに対して、別の複数の値をPHPに受け渡したいのです。 例としは下記のような命令をしたいのですが、どうしても解決策がわかりません。 1.jpgで作成したボタンをクリックすると、textの"コンニチワ"、textの30、1.jpgが1.phpへ送られる。 2.jpgで作成したボタンをクリックすると、textの"コンバンワ"、textの50、2.jpgが1.phpへ送られる。 下記は、一応自分で作成したものです。 ●sample.html <form method="post" action="1.php"> <input name="namae"type="text"value="コンチニワ"> <input name="namae"type="text"value="コンバンワ"><br> <BUTTON type ="submit"name="submit1"> <IMG src="1.jpg"> </BUTTON> <BUTTON type ="submit"name="submit2"> <IMG src="2.jpg"> </BUTTON><br> <input name="price"type="text"value="30"> <input name="price"type="text"value="50"> -------------------------------- 【sample.htmlの希望表示】 namaeテキスト  namaeテキスト ボタン画像    ボタン画像 priceテキスト  priceテキスト -------------------------------- ●1.php <?php $namae=$_POST['namae'] $kakaku=$_POST['price'] $image=&_POST['image'] ?> もしかしたら、imageについては表示させないテキストに隠して値だけ送るという 手もあるかもしれません。やり方がわかりませんが。

    • 締切済み
    • PHP