このコードがあります:
なぜテキスト ファイルに「bar」が書き込まれず、代わりに「42」が警告されるのですか?
注: この質問の以前のリビジョンでは、サーバー上の PHP とクライアント上の JavaScript について明示的に言及していました。ある言語がクライアントで実行され、別の言語がサーバーで実行される場合 (言語が同じであっても)、問題の性質と解決策は どの 言語でも同じです。特定の言語に関する回答を見つけた場合は、このことを考慮してください。
PHP コードが JavaScript コード内で機能しない理由を判断するには、クライアント側と サーバー側##を理解する必要があります。 # は言語とは何か、そしてそれらはどのように機能するのかを示しています。
: データベースからレコードを取得し、ステートレス HTTP 経由で に接続し、多くの操作を実行します。セキュリティが必要なもの。これらのプログラムはサーバー上に存在し、ソース コードをユーザーに公開することはありません。 したがって、サーバー側の言語がHTTPリクエストを処理して処理していることが簡単にわかります。@decezeが言ったように、
一方、
はブラウザー内に存在し、ブラウザー内で実行されます。 クライアントサイドスクリプトは通常、サーバーサイドではなく、ユーザーのWebブラウザによってクライアントサイドで実行されるネットワーク上のコンピュータプログラムの一種を指します。 p> JavaScript はユーザーに表示され、簡単に変更できるため、セキュリティの観点から JavaScript に依存することはできません。
したがって、サーバーに
リクエストを送信すると、サーバーはまず PHP ファイルを注意深く読み取って、実行する必要のあるタスクがあるかどうかを確認してから、クライアントに応答を送信します。繰り返しますが、@decezeが言ったように、*PHPが応答の出力を完了すると、スクリプトは終了し、新しいHTTPリクエストが到着するまでサーバー上では何も起こりません。 * それでは、PHP を呼び出す必要がある場合はどうすればよいでしょうか?これは、ページをリロードするか、AJAX 呼び出しを使用するかなど、これを行う必要がある方法によって異なります。
コードは、サーバー側とクライアント側という2つの完全に独立した部分に分割されています。
双方は HTTP リクエストとレスポンスを通じて通信します。 PHP はサーバー上で実行され、HTML コードと場合によっては JavaScript コードを出力します。これは応答としてクライアントに送信され、そこで HTML が解釈されて JavaScript が実行されます。 PHP が応答の出力を完了すると、スクリプトは終了し、新しい HTTP リクエストが到着するまでサーバー上では何も起こりません。
サンプルコードは次のように実行されます:
ステップ 1、PHP は タグ間のすべてのコードを実行します。結果は次のようになります:
file_put_contents この呼び出しは結果を生成せず、ファイルに「foo」を書き込むだけです。 呼び出しの結果、出力「42」が生成され、コードが元々あった場所に配置されます。
file_put_contents
生成された HTML/JavaScript コードはクライアントに送信され、そこで評価されます。 alert 呼び出しは機能しますが、foo 変数はどこにも使用されていません。
alert
foo
すべての PHP コードは、クライアントが JavaScript の実行を開始する前にサーバー上で実行されます。応答には、JavaScript が操作できる PHP コードは残されていません。
特定の PHP コードを呼び出すには、クライアントは新しい HTTP リクエストをサーバーに送信する必要があります。これは、次の 3 つの方法のいずれかを使用して実現できます。
これらの方法について詳しく説明する質問があります
window.location を使用してフォームを送信したりして、可能性 1. と 2. をシミュレートすることもできます。
を使用してフォームを送信したりして、可能性 1. と 2. をシミュレートすることもできます。
PHP コードが JavaScript コード内で機能しない理由を判断するには、クライアント側と サーバー側##を理解する必要があります。 # は言語とは何か、そしてそれらはどのように機能するのかを示しています。
サーバーサイド言語 (PHP など): データベースからレコードを取得し、ステートレス HTTP 経由で に接続し、多くの操作を実行します。セキュリティが必要なもの。これらのプログラムはサーバー上に存在し、ソース コードをユーザーに公開することはありません。 したがって、サーバー側の言語がHTTPリクエストを処理して処理していることが簡単にわかります。@decezeが言ったように、
PHPはサーバー上で実行され、HTMLとおそらくJavaScriptコードを出力します。クライアントでは、HTML が解釈され、JavaScript が実行されます。一方、
クライアント側言語 (JavaScript など)はブラウザー内に存在し、ブラウザー内で実行されます。 クライアントサイドスクリプトは通常、サーバーサイドではなく、ユーザーのWebブラウザによってクライアントサイドで実行されるネットワーク上のコンピュータプログラムの一種を指します。 p> JavaScript はユーザーに表示され、簡単に変更できるため、セキュリティの観点から JavaScript に依存することはできません。
したがって、サーバーに
HTTPリクエストを送信すると、サーバーはまず PHP ファイルを注意深く読み取って、実行する必要のあるタスクがあるかどうかを確認してから、クライアントに応答を送信します。繰り返しますが、@decezeが言ったように、*PHPが応答の出力を完了すると、スクリプトは終了し、新しいHTTPリクエストが到着するまでサーバー上では何も起こりません。 * それでは、PHP を呼び出す必要がある場合はどうすればよいでしょうか?これは、ページをリロードするか、AJAX 呼び出しを使用するかなど、これを行う必要がある方法によって異なります。
HTTP- リクエストを送信します。
JavaScript を使用して AJAX 呼び出しを行うことができます。これにはページをリロードする必要はありません。
- 良い読書:
コードは、サーバー側とクライアント側という2つの完全に独立した部分に分割されています。
リーリー双方は HTTP リクエストとレスポンスを通じて通信します。 PHP はサーバー上で実行され、HTML コードと場合によっては JavaScript コードを出力します。これは応答としてクライアントに送信され、そこで HTML が解釈されて JavaScript が実行されます。 PHP が応答の出力を完了すると、スクリプトは終了し、新しい HTTP リクエストが到着するまでサーバー上では何も起こりません。
サンプルコードは次のように実行されます:
リーリーステップ 1、PHP は
リーリータグ間のすべてのコードを実行します。結果は次のようになります:
file_put_contents
この呼び出しは結果を生成せず、ファイルに「foo」を書き込むだけです。呼び出しの結果、出力「42」が生成され、コードが元々あった場所に配置されます。
生成された HTML/JavaScript コードはクライアントに送信され、そこで評価されます。
alert
呼び出しは機能しますが、foo
変数はどこにも使用されていません。すべての PHP コードは、クライアントが JavaScript の実行を開始する前にサーバー上で実行されます。応答には、JavaScript が操作できる PHP コードは残されていません。
特定の PHP コードを呼び出すには、クライアントは新しい HTTP リクエストをサーバーに送信する必要があります。これは、次の 3 つの方法のいずれかを使用して実現できます。
ブラウザに新しいページをロードさせるリンク。-
フォーム送信。データをサーバーに送信し、新しいページを読み込みます。 -
- AJAX リクエスト。これは、現在のページから離れることなく、サーバーへの通常の HTTP リクエスト (1. および 2. を参照) を生成するために使用される Javascript テクノロジです。
これらの方法について詳しく説明する質問があります
JavaScript を使用して、ブラウザで新しいページを開いたり、window.location
を使用してフォームを送信したりして、可能性 1. と 2. をシミュレートすることもできます。