首先执行啥?它是php标签内的脚本还是HTML?

Posted

技术标签:

【中文标题】首先执行啥?它是php标签内的脚本还是HTML?【英文标题】:What gets executed first? Is it script inside php tag or HTML?首先执行什么?它是php标签内的脚本还是HTML? 【发布时间】:2019-03-11 21:33:27 【问题描述】:

我有一个扩展名为 .php 的文件。 我正在关注一个教程,它同时包含在同一个文件中。

所以文件看起来像这样:

<?php


?>
<!DOCTYPE html>
<html>

</html>

我想知道哪个会先执行?

顺便说一句,这是解决这个问题的一个分支。 这个特定的文件与防止 CSRF 攻击有关。 在 HTML 中,有一个 PHP sn-p,看起来像

 <?php Token::generate() ?>

在隐藏的文本字段之一中。 我不确定他为什么将前端和后端放在一个文件中。 这是预防 CSRF 的必要性吗?

提前致谢。

【问题讨论】:

PHP 在服务器端执行,HTML 将在客户端解释。那么哪个先出现? 从安全的角度来看,代码如何被分割成片段和部分是无关紧要的,只要它被正确地粘合在一起。但是如果你把这个 html 标记和那个 php 代码放到单独的文件中,你将需要一个 third 文件来将它们粘合在一起。或者,或者,一些 php 或 http 级别的引擎魔法。 @arkascha - 在我粗略的观察中,有时 HTML 会先执行,有时 PHP 会先执行。这真的让我很困惑。根据我对预防 CSRF 的基本理解,它会检查表单中的令牌值与 $_SESSION['token'] 中保存的内容(以防万一,我将令牌值存储到其中。)所以我有限的逻辑告诉我它应该没关系将其分解为单独的文件。我不明白你为什么需要第三个文件来粘合它? @Nguaial 您的“粗略观察”是错误的。当对 PHP 脚本发出请求时,该脚本在服务器上执行,然后将输出(通常是 HTML,但有时是 JSON 或其他内容)发送回浏览器。如果输出包含&lt;script&gt; 标记,则这些脚本将仅由浏览器执行。但是 HTML 或其中的任何内容都无法“在 PHP 之前”执行,因为 HTML 仅在 PHP 脚本运行时生成。 【参考方案1】:

PHP 在服务器上执行,此执行的输出是 HTML 代码。

浏览器获取 HTML 代码并显示它。

【讨论】:

感谢伟大的图表。这太棒了!我了解 HTML 中嵌入的 php 代码。我的问题不同。当有 2 个部分时就是这种情况:顶部是 ,底部是 . @Nguaial 认为“案例”也不例外。执行 PHP 脚本,然后将 HTML 输出发送到浏览器。一些脚本在所有 PHP 标记之外是纯 html 的事实是无关紧要的,这仍然是脚本输出的一部分,在完成执行之前不会发送到浏览器。 @Robin Zigmond - 感谢您澄清这一点。我真的很感激。【参考方案2】:

我认为执行是基于文件中写入的顺序。由于 PHP 位于顶部,因此 PHP 将首先执行。

【讨论】:

以上是关于首先执行啥?它是php标签内的脚本还是HTML?的主要内容,如果未能解决你的问题,请参考以下文章

在wordpress中获取<p>标签内的内容

怎么用JS获取HTML标签内的内容

JavaScript和java有啥关系嘛?

一个PHP脚本,通过curl先获取百度地图api生成的经纬度,然后改数据库内的数据。

html5有啥快捷键实现注释

输入标签内的 HTML 名称属性中允许使用哪些字符?