PHP基础实战:日期处理、URL编解码与Session Cookie用法

Chloe
Chloe
发布时间:2026-10-15| 6人浏览过
原创

本文介绍PHP中时间戳与格式化的转换方法,演示URL参数的编码与解码接收技巧,并深入解析Session在服务端的存储机制以及Cookie在客户端的设置、修改与删除操作。

时间戳获取与格式化输出

在处理网站日志、文章发布时间或用户会话超时等场景时,精确的日期时间处理是基础。PHP提供了内置函数来轻松获取当前时间戳,并将其转换为可读的格式。需要注意的是,默认时间戳对应的是格林威治时间(GMT),在中国使用时需进行时区调整。

第1步:获取当前时间戳并转为中国标准时间

目的:获取自Unix纪元以来的秒数,并显示符合北京时间(UTC+8)的格式化字符串。
操作:使用time()函数获取原始时间戳。由于中国位于东八区,比GMT快8小时(即28800秒),因此需要在时间戳基础上加上8 * 3600。
参数说明:date("Y-m-d H:i:s", ...)用于格式化输出,其中Y代表四位年份,m代表月份,d代表日,H代表24小时制小时,i代表分钟,s代表秒。

<?php
echo time(); // 返回以秒计算的时间数字戳
echo "<br>";
// 格式化时间,+8*3600 修正为中国时区时间
echo date("Y-m-d H:i:s", time() + 8 * 3600);
echo "<br>";
?>

第2步:将日期字符串转换为时间戳

目的:将“年-月-日 时:分:秒”格式的字符串解析为标准时间戳,便于数据库存储或时间计算。
操作:使用strtotime()函数解析字符串,随后再次调用date()进行格式化验证。
注意:strtotime()能智能识别多种日期格式,但若源数据非标准格式,解析可能失败。

<?php
$str = "2010-08-24 10:26:10";
echo date("Y-m-d H:i:s", strtotime($str)); // 将字符串转为时间戳并格式化
echo "<br>";
?>

表单变量接收与URL编码

在Web开发中,URL查询字符串(Query String)常用于传递简单参数。为防止特殊字符导致解析错误,通常需要对中文或非ASCII字符进行URL编码。PHP会自动解码接收到的URL参数到$_GET或$_POST数组中,但手动编码链接时可利用urlencode()确保兼容性。

第3步:URL参数编码与解码演示

目的:生成安全的URL链接,并观察PHP自动解码后的变量内容。
操作:使用urlencode()对中文内容进行编码,生成可嵌入URL的字符串。在后续请求中,PHP自动将其存入$_GET['page']。
参数说明:urldecode()可用于手动还原编码后的字符串,但在访问$_GET超全局变量时通常无需此步。

<?php
$str = urlencode("第一页"); // URL变量编码
echo $str;
echo "<br>".urldecode($str); // URL变量解码
echo "<br><a href='index.php?page=" . $str . "'>第一页</a>";
echo "<br>";

if ($_GET) {
    echo "变量已接收:" . $_GET['page'];
}
echo "<br>";
?>

Session服务端状态管理

Session允许在服务器端存储特定用户的数据,直到会话结束(通常指浏览器关闭)。相比Cookie,Session更安全,适合存储敏感信息如用户ID、登录状态等。

第4步:初始化、读写与销毁Session

目的:建立服务器端会话,添加/修改/删除数据,并验证状态变化。
入口:每个使用Session的页面顶部必须调用session_start(),否则无法读写$_SESSION。
操作:
1. 初始化:通过赋值给$_SESSION['key']数组元素创建新Session。
2. 修改:直接覆盖同名Key的值即可。
3. 注销:使用unset($_SESSION['key'])移除单个键值对;若要彻底销毁整个Session并清除文件,需配合session_destroy()(本例仅演示局部注销)。
完成状态:print_r($_SESSION)输出当前服务器持有的所有Session数据。

<?php
session_start(); // 声明开启Session,以便读写

// 声明和初始化Session变量
$_SESSION['id'] = '服务器';
$_SESSION['name'] = '会话';
print_r($_SESSION); // 输出包含两个键值的数组
echo "<br>";

// 修改其中一个Session值
$_SESSION['id'] = '还是服务器';

// 注销一个特定的Session变量
unset($_SESSION['name']);

print_r($_SESSION); // 输出只剩id键的数组
echo "<br>";
?>

Cookie客户端状态管理

Cookie是存储在用户浏览器中的文本文件,常用于记住用户偏好、登录保持等。它由服务器通过HTTP响应头发送,并在后续请求中随请求一起发回服务器。Cookie可以设置过期时间,超过时间后失效。

第5步:设置、修改与删除Cookie

目的:在客户端设置具有不同生命周期的Cookie,并演示如何更新或删除。
操作:
1. 设置:使用setcookie(name, value, expire)。第二个参数为值,第三个参数为过期时间戳。若不指定过期时间,则为会话级Cookie(关闭浏览器失效)。
2. 修改:直接再次调用setcookie()设置相同名称的新值即可覆盖旧值。
3. 注销:官方推荐做法是将过期时间设为过去的时间(如time()-1)并将值置空,这会让浏览器立即删除该Cookie。
风险提醒:Cookie数据存储在用户本地,安全性较低,切勿存储密码等敏感信息。另外,setcookie必须在任何HTML输出之前调用,且修改/删除Cookie后,当前页面的$_COOKIE数组不会立即反映变更,需刷新或进入下一页才能看到最新状态。

<?php
// 设置一个会话级Cookie(关闭浏览器即失效)
setcookie("id", "客户端");

// 设置一个1小时后过期的Cookie
setcookie("name", "会话", time() + 3600);

print_r($_COOKIE); // 输出当前存在的Cookie数组
echo "<br>";

// 修改Cookie值
setcookie("id", "还是客户端");

// 注销Cookie:等价于将过期时间设为过去,值置空
// unset($_COOKIE['name']); 仅在服务器内存层面移除,浏览器端需通过setcookie(time()-1)通知删除
setcookie("name", "", time() - 1);

print_r($_COOKIE); // 注意:此处输出可能仍包含未刷新的Cookie
echo "<br>";
?>

以上就是PHP处理日期、表单接收、session和cookie的详细内容,更多关于PHP基础教程的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。