跳转至

PHP Web 基础

约 547 个字 14 行代码 预计阅读时间 2 分钟

请求、Cookie 和 Session

请求

HTTP 传参

$_GET$_POST 内以数组形式存放了关于 GET、POST 方法传的参数。 形式:

$_GET['key'] = value

判断有没有相关的参数可以使用 isset()

在涉及到接收 GET、POST 参数的代码中,需要注意验证传入的参数是否存在(isset($a))、是否为空(empty($a))。如果参数需要存在且不为空,只用 empty($a) 即可。

上传文件时表单的配置

涉及到上传文件时,<input>type="file"<form> 需要定义属性:enctype="multipart/form-data"

用户上传文件

$_FILES以数组的形式表示了用户上传的文件的数据。其中的每一项为一个数组:

1
2
3
4
5
$_FILES[name] => 上传时客户端上的文件名
$_FILES[type] => 文件类型
$_FILES[tmp_name] => 服务器上的临时文件名
$_FILES[error] => 错误码
$_FILES[size] => 文件大小(B)

将上传的文件的临时文件 $f(由 $_FILES 内的项的 tmp_name 得到)转移到 $dest 位置(包括文件名):

move_uploaded_file($file, $dest)
  • 数据存储在浏览器端
  • 特点
    • 方便与 JS 交换数据
    • 方便获取用户信息
  • 风险:浏览器可能会禁用 Cookie
  • 替代方案:URL 参数

Session 特点

  • 数据存储在服务器
  • 特点
    • 高效
    • 安全
    • 不依赖浏览器端环境
    • 服务器端会为每一个用户用一个 ID 来标识

创建

创建键为 $key,值为 $val 的 Cookie:

setcookie($key, $val)

存储

存储与本站有关的 Cookie,为数组形式,通过 $_COOKIE[key] 这样的语句可以访问 key 对应的值:

$_COOKIE

使用 Session

首先启用 Session:

session_start()

服务器会为每一个客户端使用 session_id 来表示,可以通过这个函数来查看。这个字符串与设备和浏览器相关,如果在相同的网站打开其他标签页,或者是关闭所有标签(但不退出浏览器),再打开页面,仍然是这个值。退出浏览器之后,值失效。使用不同的浏览器,值也会不同:

session_id()

和 Cookie 相似:

$_SESSION

不过,设置时只需要和其他数组一样直接赋值即可。在其他标签页可以读到值:

$_SESSION[key] = val

实际开发中经常使用 Session 记录用户的登陆状态。

销毁 Session

包括 id 和键值对。比如用户的退出登录,就可以使用这个。

session.destory()