15

我正在学习互联网和网站的运作方式。我想我了解 PHP 处理器如何处理 .php 文件:

浏览器请求以 .php 结尾的网页并将请求发送到该网页的服务器。
服务器询问“我能找到那个页面吗?”
如果服务器没有找到它,服务器发回错误。
如果服务器找到页面,服务器会询问“文件扩展名是否以 .html 或 .php 结尾”?
如果它以 .html 结尾,服务器将页面发送回浏览器。
如果它以 .php 结尾,则将页面交给 PHP 处理器。
PHP 处理器逐行扫描页面。它构建了一个经过处理的 HTML 页面。
如果它找到 HTML,它会将其作为它正在构建的已处理 HTML 页面的一部分传递。
如果它找到 PHP 脚本,PHP 处理器可能会也可能不会输出 HTML。
PHP 处理器完成后,将处理后的页面交给 Web 服务器以发送到浏览器。

HTML 是否仍然为 .php 文件提供结构,就像 HTML 为也使用 CSS 的网页提供结构一样?当我说结构时,我的意思是划分,以及头部和身体部分。结构与网页的基本骨架一样。似乎在某些网页上,PHP 比 HTML 还多。有时只有最低限度的 HTML,其余的是 PHP 和 Javascript,这就是网页的制作方式吗?

总之,包含 PHP 代码的网页需要具有 .php 扩展名。一旦 PHP 处理器遇到<? PHPor <?,服务器将代码发送到 PHP 处理器(这个措辞可能是多余的)。PHP 处理器的输出可以是任何东西。
任何东西都包括:

  • CSS
  • HTML
  • Javascript?
  • XML?
  • XHTML?
  • 图片
  • 声音?
  • 视频?
  • flash之类的动画?

显然可能需要强制内容类型,但可以做到。
HTML 是所见即所得。
要在网页到达用户浏览器后对其进行控制和操作,可以使用 Javascript。随着移动设备和一些不同类型的浏览器的出现,发明了 jQuery 以使开发 Javascript 程序更容易。

4

4 回答 4

18

HTML 是网络的语言。它是一种标记语言,这意味着我们唯一可以使用它的就是“标记”文档,即设计最终用户对内容的外观。

想象一下,我们有一个向用户显示日期的页面。

我们可以使用一些 HTML 来做到这一点:

<p>Sunday 26 August 2012</p>

但是假设我们想让该页面保持最新。我们必须每天手动更改日期。因为 HTML 是静态的,所以不能动态更改。

根据页面的加载时间,能够自动生成将正确的日期添加到页面可能会很有用。

这就是 PHP 的用武之地。PHP 是一种脚本语言,虽然它可以用于很多事情,但它的主要用途之一是动态生成 HTML。因此,与其写今天的日期——我们可以做的是使用一些 PHP 并说。

<p><? echo date("l j F Y");?></p>

这将为我今天打印“2012 年 8 月 26 日星期日”,明天“2012 年 8 月 27 日星期一”,依此类推。

我需要将这个新版本的页面保存为 page.php 而不是 page.html,因为我需要我的服务器(使用 PHP 设置)将页面发送到 PHP 解释器。它会寻找特殊的<?php<?尝试处理它找到的任何东西。在这种情况下,它会在我的页面上吐出正确的日期文本,并将其添加到页面中,然后再发送给用户。

我们可以用 PHP 做很多很酷的事情。它是“服务器端”技术,这意味着它在服务器上完成工作,然后将添加了所有动态内容的完成页面发送给我们。

有时我们可能希望在页面到达用户浏览器后对其进行控制和修改。为此,我们需要一些“客户端”技术,即在用户浏览器中运行的代码。最常见的客户端语言选择是 javascript。

同样,我们可以使用 Javascript 做很多事情,但大多数情况下,我们在网页中使用它以允许我们在 HTML 页面到达用户后控制它的元素。

我们可能希望在页面上隐藏某些内容,然后仅在用户单击按钮后才显示它。我们可以用 javascript 做到这一点。

现在因为 Javascript 是“客户端”技术,即它在您的浏览器中运行,它实际上可能很难使用,因为您必须编写适用于各种不同浏览器的代码,现在也可以在手机上运行!为了使这项工作更容易,非常聪明的开发人员通过创建库和框架来使用 javascript 来控制网页中的元素,从而减轻了很多痛苦。其中最流行的一种是jQuery 框架。我认为 jQuery 是学习中最有趣的东西,因为它允许你在网页中做所有“很酷的东西”——让东西淡入、淡出、播放声音、移动元素等等


我希望这可以帮助您了解不同的技术如何帮助您实现不同的目标。

TL;DR版本将是:

HTML & CSS - 列出你的页面的外观。

PHP - 帮助您动态生成 HTML。

JavaScript - 帮助您使页面更具交互性,并可以响应用户的点击或其他操作。

于 2012-08-26T00:21:24.337 回答
3

最重要的是要了解 HTML 和 PHP 之间的区别。在 HTML 中,您编写代码、上传代码,然后用户将随后下载该页面以及所有代码。用户的浏览器会解释此代码并向用户显示您想要的页面(希望如此)。换句话说,HTML 是一种所见即所得,从某种意义上说,所有代码都交给用户并由浏览器解释。

使用 PHP,它的工作方式略有不同,因为您实际上并没有下载作者编写的代码。发生的情况是,如果您要下载 php 页面,则该文件中的代码首先由服务器处理,然后您下载代码的输出,而不是整个代码。这又将像以前一样是 HTML,这就是为什么您永远不会在网页源代码中看到 PHP 代码的原因。

使用 PHP 的目标是使用服务器的处理能力来构建(通常)动态网页。一个非常基本的示例是在网页上显示一天中的正确问候语。

于 2012-08-26T00:23:36.283 回答
2

轻微变化...

PHP 处理器逐个字符地扫描页面。
直到一个 <? PHP 发现此文本以一种复制模式直接发送到 Web 服务器。
(此文本可能是 HTML、XML、JavaScript 或其他任何内容)。
一次在 <? PHP 被发现输入被定向到 PHP,它会用它做任何事情。
PHP 的任何标准“打印”输出都会发送到传出的 http 流。
一旦找到 ?>,流就会恢复到原始复制模式。

PHP 能够发送 HTML、CSS、JavaScript 或其他任何内容。您可能需要强制内容类型,但可以做到。

于 2012-08-26T00:19:48.447 回答
1

PHP 并没有什么特别之处。基本区别在于用编程语言编写的静态文件和动态文件。

静态文件只是由服务器直接发送到浏览器。这些不仅仅是 HTML,图像文件也是如此。当您下载应用程序或 PDF 时,使用相同的机制——它可能是 ZIP 文件、EXE、磁盘映像(Mac 下载常见)。

在动态文件的情况下,文件以某种方式执行,并且它产生的输出被发送到浏览器。动态文件可以是任何语言——它甚至可以是二进制编译的可执行文件。然而,脚本语言通常是最受欢迎的,仅仅是因为它们往往更容易编写 Web 应用程序。因此,已经编写了很多库来支持 Web 应用程序——这是一种积极的反馈情况。在网络的早期,Perl 可能是最常用的语言。我们没有像现在这样过多的脚本语言。

PHP 的特别之处在于它是专门为编写网页脚本而设计的。在所有其他语言中,您必须编写显式命令来生成任何输出。PHP 处理器简单地逐字输出文件内容,直到遇到<?php标记(它还可以识别一些其他标记)。然后它开始执行程序,直到它看到?>,此时它恢复为逐字输出。

另一种思考方式是,外界的任何事情都被视为一项重大echo声明。事实上,这个模型是有必要理解的,你实际上可以在语句中间切换模式。你可以做:

<?php
if(something){
    ?>
    some text
    <?php
} else {
    ?>
    some other text
    <?php
}

这显然是只输出一行的愚蠢方式,但想象一下如果它是一大块文本。基本上,PHP 的设计允许您编写一个普通的 HTML 网页,然后在您需要的地方嵌入编程代码以生成动态内容。

虽然 PHP 脚本输出 HTML 是最常见的,但并非总是如此。有一个输出图像的 PHP 脚本并不少见。它可以通过使用数据库来存储图像或图像文件的位置来实现。它还具有内置和库函数,可以动态生成图像数据。例如,如果您访问一个生成图表的网站,这些图表可能是由 PHP 脚本生成的。

于 2012-08-26T01:00:41.437 回答