客户端与服务器端编程的差异在哪里?
P粉757640504
P粉757640504 2023-08-22 20:26:21
0
2
557
<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上由用户的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学习者快速成长!