搜索

首页  >  问答  >  正文

客户端与服务器端编程的差异在哪里?

<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粉757640504P粉757640504458 天前573

全部回复(2)我来回复

  • P粉111927962

    P粉1119279622023-08-23 15:50:54

    要确定为什么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:客户端和服务器端编程的区别

    回复
    0
  • P粉103739566

    P粉1037395662023-08-23 09:17:40

    您的代码被分为两个完全独立的部分,即服务器端客户端

                        |
                   ---------->
                  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的可能性。

    回复
    0
  • 取消回复