Was ist der Unterschied zwischen clientseitiger und serverseitiger Programmierung?
P粉757640504
P粉757640504 2023-08-22 20:26:21
0
2
608
<p>Ich habe diesen Code:</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 ?>; alarm(baz); </script></pre> <p>Warum schreibt dieser Code nicht „bar“ in meine Textdatei, sondern erscheint „42“? </p> <hr /> <p>Hinweis: Eine frühere Überarbeitung dieser Frage befasste sich explizit mit PHP auf dem Server und JavaScript auf dem Client. Wenn eine Sprache auf dem Client und eine andere auf dem Server ausgeführt wird (auch wenn es sich um dieselbe Sprache handelt), sind die Art des Problems und die Lösung gleich. Bitte berücksichtigen Sie dies, wenn Sie Antworten zu bestimmten Sprachen sehen. </p>
P粉757640504
P粉757640504

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

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage