飞机的 PHP 学习笔记七:Web

前言

最近在系统的学习 PHP ,参考的资料是《PHP编程》+ 官方文档(如果你有好的学习资料,欢迎推荐给我)。虽然这本《PHP编程》是基于 PHP5 的,但我笔记里的代码,全部在 PHP 7.2 的环境里测试过,是能够运行的。另,本笔记中只记录我模糊不清的知识。

变量

PHP 可创建包含 EGPCS(environment、GET、POST、cookie、serever) 信息的 6 个全局数组。

  • $_COOKIE : 包含作为请求中 cookie 数值的部分,数组的键名是 cookie 的名字。
  • $_GET : 包含作为 GET 请求中参数的部分,数组的键名是表单参数。
  • $_POST : 包含作为 POST 请求中参数的部分,数组的键名是表单参数。
  • $_FILES : 包含上传文件的信息。
  • $_SERVER : 包含网页服务器中有用的信息。
  • $_ENV : 包含环境变量数值,数组的键名是环境变量的名字。
  • $_REQUEST : 包含 $_GET、 $_POST、 $_COOKIES 所有信息的一个组合。

这些变量不仅是全局的,而且在函数定义内部也是可见的。

服务器信息

$_SERVER 数组包含大量有用的网页服务器信息。大部分信息来自于 CGI 规范要求的环境变量。

  • PHP_SELF : 当前执行脚本的文件名,相对于文档根目录。
  • SERVER_SOFTWARE : 服务器标识符(例如, Apache/1.3.33(Unix)mod_perl/1.26 PHP/ 5.0.4)。
  • SERVER_NAME : 从当前引用的 URL 的主机名、DNS 别名或用于自引用 URL 的 IP 地址(例如, www.baidu.com)。
  • GETEWAY_INTERFACE : 服务器使用的 CGI 标准的版本(例如, CGI/1.1 )。
  • SERVER_PROTOCAL : 请求页面时通信协议的名称和版本(例如, HTTP/1.1 )。
  • SERVER_PORT : 服务器发送请求的端口号(例如, 80 )。
  • REQUEST_METHOD : 客户端获取页面所使用的方法(例如, GET )。
  • PATH_INFO : 客户端提供的真实路径(例如, /list/users )。
  • PATH_TRANSLATED : 根据 PATH_INFO 的值转换到服务器的基本路径(例如, /home/httpd/htdocs/list/users )。
  • SCRIPT_NAME : 当前页面的 URL 路径,对当前自引用脚本很有用(例如, /~me/menu.php )。
  • QUERY_STRING : URL 中 ? 后面的所有信息(例如, name=Ferd+age=35 )。
  • REMOTE_HOST : 请求当前页面的用户的主机名。如果服务器没有 DNS ,这就是空的,只有 REMOTE_ADDR 的信息。
  • REMOTE_ADDR : 一个包含请求当前页面 IP 地址的字符串(例如, 192.168.0.250 )。
  • AUTH_TYPE : 如果页面是受密码保护的,这代表保护页面的认证方法(例如, basic )。
  • REMOTE_USER : 如果页面是受密码保护的,这是在认证客户端的用户名(例如, Yi )。注意,密码是无法获取的。
  • REMOTE_IDENT : 如果服务器配置了身份认证系统 identd(RFC 931) ,这是从主机获取的用户名。由于很容易伪证,不要使用该字符串做认证。
  • CONTNT_TYPE : PUT 和 POST 附加信息的内容类型(例如, x-url-encoded )。
  • CONTENT_LENGTH : PUT 和 POST 附加信息的长度(例如, 3952 )。
  • HTTP_USER_AGENT : 浏览器的标识字符串(例如, Mozilla/5.0(Windows 2000;U)Opera 6.0[en] )。
  • HTTP_REFERER : 浏览器表示当前页面来自于哪个页面(例如, http://www.examplle.com/last_page.html)。

响应头

当你想发回非 HTML 的页面、设置页面的过期时间、重定向客户端浏览器或者生成 HTTP 错误,需要使用 header() 函数。

不同的内容类型

Content-Type 定义返回文档的类型。

通常为 "text/html" 指定为 HTML 文档。也可以是 "text/plain" 会强制把页面当作纯文本。

重定向

发送到浏览器的一个新的 URL ,被称为重定向,你可以设置 Location 头。

header("Location: http://www.example.com/elsewhere.html");
exit();

过期

浏览器会明确地告诉浏览器和服务器之间任何代理缓存一个文档要过期的确定时间。设置 Expires 头。

header("Expires: Fri, 18 Jan 2006 05:30:00 GMT");
//3 小时后过期
$now = time();
$then = gmstrftime("%a, %d %b %Y %H:%M:%S GMT", $now + 60 * 60 * 3);
header("Expires: {$then}");

认证

HTTP 认证通过请求头和响应头来完成。浏览器可以在请求头中发送用户名和密码(授权),如果授权没有发送或者不符合,服务器会发送“401 Unauthorized” 相应通过 WWW-Authenticate 头认证区域。

感谢你看到了这里。如果文章有错误,请评论指正,谢谢!

本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!