客户端与服务器端编程的差异在哪里?
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上由用户的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的可能性。