クライアントサイドプログラミングとサーバーサイドプログラミングの違いは何ですか? 質問する

クライアントサイドプログラミングとサーバーサイドプログラミングの違いは何ですか? 質問する

次のようなコードがあります:

<script type="text/javascript">
    var foo = 'bar';
    <?php
        file_put_contents('foo.txt', ' + foo + ');
    ?>

    var baz = <?php echo 42; ?>;
    alert(baz);
</script>

なぜテキスト ファイルに「bar」が書き込まれず、「42」が警告されるのでしょうか?


注意: この質問の以前の改訂版では、サーバー上の PHP とクライアント上の JavaScript について明確に述べられていました。問題と解決策の本質は、1 つがクライアント上で実行され、もう 1 つがサーバー上で実行されている言語のペア (同じ言語であっても) で同じです特定の言語について言及している回答を見るときは、この点を考慮してください。

ベストアンサー1

コードは、サーバー側クライアント側という完全に別々の 2 つの部分に分割されます。

                    |
               ---------->
              HTTP request
                    |
+--------------+    |    +--------------+
|              |    |    |              |
|    browser   |    |    |  web  server |
| (JavaScript) |    |    |  (PHP etc.)  |
|              |    |    |              |
+--------------+    |    +--------------+
                    |
  client side       |      server side
                    |
               <----------
          HTML, CSS, JavaScript
                    |

両者は HTTP リクエストとレスポンスを介して通信します。PHP はサーバー上で実行され、HTML と JavaScript コードを出力します。このコードはクライアントへのレスポンスとして送信され、クライアントでは HTML が解釈され、JavaScript が実行されます。PHP がレスポンスの出力を完了すると、スクリプトは終了し、新しい HTTP リクエストが到着するまでサーバー上では何も起こりません。

サンプルコードは次のように実行されます。

<script type="text/javascript">
    var foo = 'bar';
    <?php
        file_put_contents('foo.txt', ' + foo + ');
    ?>

    var baz = <?php echo 42; ?>;
    alert(baz);
</script>

ステップ 1: PHP は<?php ?>タグ間のすべてのコードを実行します。結果は次のようになります。

<script type="text/javascript">
    var foo = 'bar';

    var baz = 42;
    alert(baz);
</script>

このfile_put_contents呼び出しでは何も起こりませんでした。単に「 + foo + 」がファイルに書き込まれただけです。<?php echo 42; ?>呼び出しの結果は「42」という出力で、これは以前そのコードがあった場所にあります。

結果として得られた HTML/JavaScript コードはクライアントに送信され、評価されます。呼び出しalertは機能しますが、foo変数はどこにも使用されません。

すべての PHP コードは、クライアントが JavaScript の実行を開始する前にサーバー上で実行されます。応答には、JavaScript が対話できる PHP コードは残っていません。

PHP コードを呼び出すには、クライアントはサーバーに新しい HTTP リクエストを送信する必要があります。これは、次の 3 つの方法のいずれかを使用して実行できます。

  1. ブラウザに新しいページを読み込むリンク。
  2. フォーム送信。データをサーバーに送信し、新しいページを読み込みます。
  3. アンアヤックスrequest は、現在のページを離れずに、サーバーに通常の HTTP リクエスト (1. および 2. と同様) を送信する JavaScript テクニックです。

これらの方法をより詳しく説明した質問があります

また、JavaScript を使用して、可能性 1 と 2 をエミュレートし、ブラウザでフォームを使用して新しいページを開いたりwindow.location、フォームを送信したりすることもできます。

おすすめ記事