客户端和服务器端编程有什么区别?

2023-11-25

我有这个代码:

<script type="text/javascript">
    var foo = 'bar';
    <?php
        file_put_contents('foo.txt', ' + foo + ');
    ?>

    var baz = <?php echo 42; ?>;
    alert(baz);
</script>

为什么这不会将“bar”写入我的文本文件,而是警告“42”?


注意:这个问题的早期修订明确涉及服务器上的 PHP 和客户端上的 JavaScript。问题的本质和解决方案是相同的any当一种语言在客户端上运行而另一种语言在服务器上运行时,形成一对语言(即使它们是相同的语言)。当您看到谈论特定语言的答案时,请考虑这一点。


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

                    |
               ---------->
              HTTP request
                    |
+--------------+    |    +--------------+
|              |    |    |              |
|    browser   |    |    |  web  server |
| (JavaScript) |    |    |  (PHP etc.)  |
|              |    |    |              |
+--------------+    |    +--------------+
                    |
  client side       |      server side
                    |
               <----------
          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>

第1步,PHP执行之间的所有代码<?php ?>标签。结果是这样的:

<script type="text/javascript">
    var foo = 'bar';

    var baz = 42;
    alert(baz);
</script>

The file_put_contents调用没有产生任何结果,它只是将“+foo+”写入文件。这<?php echo 42; ?>调用的结果是输出“42”,它现在位于该代码曾经所在的位置。

生成的 HTML/JavaScript 代码现在被发送到客户端,并在客户端进行评估。这alert呼叫有效,而foo变量没有在任何地方使用。

所有 PHP 代码都在客户端开始执行任何 JavaScript 之前在服务器上执行。响应中没有留下 JavaScript 可以与之交互的 PHP 代码。

要调用某些 PHP 代码,客户端必须向服务器发送新的 HTTP 请求。这可以使用三种可能的方法之一来实现:

  1. 一个链接,导致浏览器加载新页面。
  2. 表单提交,将数据提交到服务器并加载新页面。
  3. An AJAXrequest,这是一种 Javascript 技术,用于向服务器发出常规 HTTP 请求(如 1. 和 2. 将),但不离开当前页面。

这是一个更详细地概述这些方法的问题

您还可以使用 JavaScript 让浏览器打开一个新页面window.location或提交表格,模拟可能性 1. 和 2。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

客户端和服务器端编程有什么区别? 的相关文章

随机推荐

  • 字节消息参数错误

    我无法弄清楚 字节 方法在抱怨什么 在下面的代码中 我尝试为我的客户端生成身份验证密钥 但我不断收到此错误 1 import hmac import hashlib import base64 message bytes Message u
  • 如何正确设置AppExecutionAlias以便可以从命令行启动程序?

    此 WPF 应用程序的 Package appxmanifest 已设置
  • 保护服务器上的 Breeze 以防止恶意更新外键

    问题 我只是想弄清楚在 Breeze 中保存更改时我需要在服务器端实现多少安全性 特别是 我正在考虑恶意用户如何手动破解 SaveChanges 请求 或破解客户端中的 javascript 以绕过我的正常业务规则 例如 恶意更改我的实体上
  • 如何启用 Google Vision API 在同一项目中访问 Google Cloud Storage Bucket

    我已将一些测试图像上传到 Google Cloud Bucket 但不想公开它们 这将是作弊行为 当我尝试对 Google Vision API 运行休息调用时 我得到 responses error code 7 message imag
  • .NET 捕获、分组、匹配之间的差异

    我正在使用 NET Regex 类型制作一个小型应用程序 而 捕获 分组和匹配 类型完全让我困惑 我从未见过如此丑陋的解决方案 有人能为我解释一下它们的用法吗 非常感谢 这是一个比 Dav 引用的文档中的例子更简单的例子 string s0
  • 如何在 PowerQuery 中引用单元格的值

    我有多个 Power Query 查询 我想将这些查询提供给 Excel 文件中的单元格的值 在本例中 为源文件名的完整路径 有什么办法可以将其导入到 Power Query 中吗 这可以使用 PowerQuery 中的命名范围和自定义函数
  • 如何使用 TryParseHtmlString 将十六进制转换为颜色(RGBA)

    如何使用十六进制值更改 Unity 中的按钮颜色 我尝试了这个 但它不起作用 也许我在这里犯了一个错误 btn image color ColorUtility TryParseHtmlString DADADAFF out color 您
  • 如何通过 PHP 获取页面正文中的 URL 参数?

    在 Drupal 站点上 为页面正文内容启用了 PHP 代码 如何在 PHP 代码中获取参数及其值 例如 我想得到ref and 33002 from http example com node 1 ref 33002 在下面的代码中 我可
  • RPres 中的代码框大小和字体大小

    我过去经常使用 knitr 和 beamer 来制作幻灯片 我现在在 R 演示文稿中注意到一件事 代码框和代码字体大小的动态大小似乎都丢失了 使用 knit beamer 我可以轻松地使用 size 参数更改字体大小 例如 size foo
  • 如何将单个反斜杠放入 ES6 模板文字输出中?

    我正在努力获取 ES6 模板文字来生成单个反斜杠及其结果 gt s s gt s s gt s s gt s s gt u005Cs s 通过检查 Node REPL 上的值 而不是使用打印它 使用 Node 8 9 1 和 10 0 0
  • ios:如何使用 StoryBoards 从 ViewController 打开选项卡栏控制器

    我正在这样做 并且想要从登录页面打开选项卡栏控制器 如果是第一次并且已经登录 然后传递登录页面并在 Spalsh 之后打开选项卡栏控制器 意味着如果用户第一次登陆应用程序 时间顺序应该是这样的 1 飞溅 2 登录页面 3 成功登录后 打开具
  • django forms:在单个表单中编辑多组相关对象

    我正在尝试做一些应该很常见的事情 以单一形式添加 编辑一堆相关模型 例如 Visitor Details Select destinations and activities Miami swimming clubbing sunbathi
  • Url 编码和 HTML 编码之间的区别

    和有什么区别网址编码 and a HTML 编码 HTML 编码对 HTML 文档中使用的字符串中的特殊字符进行转义 以防止与 HTML 元素混淆 例如更改
  • Python 异步任务排序

    我有一个关于python中的事件循环如何的问题asyncio模块管理未完成的任务 考虑以下代码 import asyncio asyncio coroutine def a for i in range 0 3 print a str i
  • JavaFX 中的 HTML 编辑选项

    我希望将基于 Swing 的应用程序中使用的 HTML 编辑器替换为基于 JavaFX 的编辑器 据我所知 有两种可能的选择 1 使用JavaFX HTML 编辑器 虽然这对于功能来说非常好does有 它仍然缺乏其他几个功能 例如插入图像
  • 移动应用程序的 OAuth2 流程

    我们有一个预先存在的移动应用程序 用户将注册他的用户名和密码 目前我们有一个基于自定义令牌的身份验证 我们希望在不影响用户体验的情况下切换到 OAuth2 看起来资源所有者密码凭证对我们来说是最接近的流程 但是有很多建议反对使用它们 任何其
  • 使用斯坦福 NLP 检测语言

    我想知道是否可以使用Stanford CoreNLP检测句子是用哪种语言写的 如果是这样 这些算法的精确度如何 几乎可以肯定的是 斯坦福 COreNLP 目前还没有语言识别功能 几乎 因为不存在更难证明 编辑 尽管如此 以下是间接证据 也没
  • If 语句与函数指针

    目标是根据复选框是否打开或关闭来更改事件循环中的行为 我能想到的最简单的方法就是每次运行循环时测试复选框状态 if statement void action void someLoop if checkboxTrue action oth
  • AngularJS $http 从失败的 CORS 请求返回状态代码 0

    好吧 我已经查遍了这个 基本上我们使用的是跨域请求的 http 请求 我们的服务器允许该域 当请求返回 200 时 一切正常 然而 每当我们的服务器返回错误 500 401 无论什么时候 Angular 都会认为这是 CORS 问题 我使用
  • 客户端和服务器端编程有什么区别?

    我有这个代码 为什么这不会将 bar 写入我的文本文件 而是警告 42 注意 这个问题的早期修订明确涉及服务器上的 PHP 和客户端上的 JavaScript 问题的本质和解决方案是相同的any当一种语言在客户端上运行而另一种语言在服务器上