PHP基础实战:日期处理、URL编解码与Session Cookie用法
本文介绍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基础教程的资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









