客戶端與伺服器端程式設計的差異在哪裡?
P粉757640504
P粉757640504 2023-08-22 20:26:21
0
2
560
<p>我有這段程式碼:</p> <pre class="brush:php;toolbar:false;"><script type="text/javascript"> var foo = 'bar'; <?php file_put_contents('foo.txt', ' foo '); ?> var baz = <?php echo 42; ?>; alert(baz); </script></pre> <p>為什麼這段程式碼沒有將"bar"寫入我的文字文件,但卻彈出了"42"? </p> <hr /> <p>注意:此問題的早期修訂版本明確涉及伺服器上的PHP和客戶端上的JavaScript。當一個語言在客戶端運行,另一個語言在伺服器上運行時(即使它們是相同的語言),問題和解決方案的本質是相同的。請在看到關於特定語言的答案時考慮這一點。 </p>
P粉757640504
P粉757640504

全部回覆(2)
P粉111927962

要確定為什麼PHP程式碼在JavaScript#程式碼中不起作用,我們需要了解什麼是客戶端伺服器端語言,以及它們的工作原理。

伺服器端語言(如PHP等):它們從資料庫中檢索記錄,保持在無狀態的HTTP連接上維持狀態,並執行許多需要安全性的操作。它們駐留在伺服器上,這些程式的原始碼從不暴露給使用者。

因此,您可以很容易地看出伺服器端語言處理HTTP請求並對其進行處理,正如@deceze所說,PHP在伺服器上執行並輸出一些HTML,以及可能的JavaScript程式碼,這作為回應發送到客戶端,在那裡解釋HTML並執行JavaScript。

另一方面,客戶端語言(如JavaScript)駐留在瀏覽器中並在瀏覽器中執行。 客戶端腳本通常指在Web上由使用者的網頁瀏覽器而不是伺服器端執行的電腦程式。

JavaScript對使用者可見且可以輕鬆修改,因此對於安全性問題,我們不能依賴JavaScript。

因此,當您在伺服器上發出HTTP請求時,伺服器首先仔細讀取PHP檔案以查看是否有需要執行的任務,並向客戶端發送回應。再次,正如@deceze所說,*一旦PHP完成輸出回應,腳本將結束,直到收到新的HTTP請求,伺服器上將不會發生任何事情。 *

那麼,如果我需要呼叫PHP,我該怎麼辦?這取決於您需要如何操作:透過重新載入頁面或使用AJAX呼叫。

  1. 您可以透過重新載入頁面並傳送HTTP請求來實作
  2. 您可以使用JavaScript進行AJAX呼叫-這不需要重新載入頁面

好的閱讀材料:

#
  1. 維基百科:伺服器端腳本
  2. 維基百科:客戶端腳本
  3. Madara Uchiha:客戶端和伺服器端程式設計的差異
P粉103739566

您的程式碼被分成兩個完全獨立的部分,即伺服器端客戶端

                    |
               ---------->
              HTTP请求
                    |
+--------------+    |    +--------------+
|              |    |    |              |
|    浏览器    |    |    |  网络服务器 |
| (JavaScript) |    |    |  (PHP等)    |
|              |    |    |              |
+--------------+    |    +--------------+
                    |
  客户端            |      服务器端
                    |
               <----------
          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>

第一步,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之前在伺服器上執行。回應中沒有剩餘的PHP程式碼可以與JavaScript互動。

要呼叫一些PHP程式碼,客戶端必須向伺服器傳送一個新的HTTP請求。這可以透過以下三種可能的方法之一來實現:

  1. 鏈接,導致瀏覽器加載一個新頁面。
  2. 表單提交,將資料提交到伺服器並載入一個新頁面。
  3. AJAX請求,這是一種JavaScript技術,用於向伺服器發出常規的HTTP請求(與1和2類似),但不會離開目前頁面。

這裡有一個更詳細地概述這些方法的問題

#

您也可以使用JavaScript讓瀏覽器開啟一個新頁面,使用window.location或提交一個表單,模擬1和2的可能性。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!