客戶端與伺服器端程式設計的差異在哪裡?
P粉757640504
2023-08-22 20:26:21
<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>
要確定為什麼PHP程式碼在JavaScript#程式碼中不起作用,我們需要了解什麼是客戶端和伺服器端語言,以及它們的工作原理。
伺服器端語言(如PHP等):它們從資料庫中檢索記錄,保持在無狀態的HTTP連接上維持狀態,並執行許多需要安全性的操作。它們駐留在伺服器上,這些程式的原始碼從不暴露給使用者。
因此,您可以很容易地看出伺服器端語言處理HTTP請求並對其進行處理,正如@deceze所說,PHP在伺服器上執行並輸出一些HTML,以及可能的JavaScript程式碼,這作為回應發送到客戶端,在那裡解釋HTML並執行JavaScript。
另一方面,客戶端語言(如JavaScript)駐留在瀏覽器中並在瀏覽器中執行。 客戶端腳本通常指在Web上由使用者的網頁瀏覽器而不是伺服器端執行的電腦程式。
JavaScript對使用者可見且可以輕鬆修改,因此對於安全性問題,我們不能依賴JavaScript。
因此,當您在伺服器上發出HTTP請求時,伺服器首先仔細讀取PHP檔案以查看是否有需要執行的任務,並向客戶端發送回應。再次,正如@deceze所說,*一旦PHP完成輸出回應,腳本將結束,直到收到新的HTTP請求,伺服器上將不會發生任何事情。 *
那麼,如果我需要呼叫PHP,我該怎麼辦?這取決於您需要如何操作:透過重新載入頁面或使用AJAX呼叫。
好的閱讀材料:
#您的程式碼被分成兩個完全獨立的部分,即伺服器端和客戶端。
這兩個部分透過HTTP請求和回應進行通訊。 PHP在伺服器上執行並輸出一些HTML和可能的JavaScript程式碼,作為回應傳送給客戶端,在客戶端解釋HTML並執行JavaScript。一旦PHP完成輸出回應,腳本就會結束,在伺服器上不會發生任何事情,直到有新的HTTP請求進來。
範例程式碼的執行過程如下:
第一步,PHP執行
<?php ?>
標籤之間的所有程式碼。結果如下:file_put_contents
呼叫沒有產生任何結果,它只是將" foo "寫入檔案中。而<?php echo 42; ?>
呼叫的結果是輸出"42",現在它在原來程式碼的位置。這個結果的HTML/JavaScript程式碼現在被傳送到客戶端,在那裡被評估。
alert
呼叫起作用,而foo
變數在任何地方都沒有被使用。所有的PHP程式碼都在客戶端開始執行任何JavaScript之前在伺服器上執行。回應中沒有剩餘的PHP程式碼可以與JavaScript互動。
要呼叫一些PHP程式碼,客戶端必須向伺服器傳送一個新的HTTP請求。這可以透過以下三種可能的方法之一來實現:
這裡有一個更詳細地概述這些方法的問題
#您也可以使用JavaScript讓瀏覽器開啟一個新頁面,使用
window.location
或提交一個表單,模擬1和2的可能性。