<?php header("Content-Type: text/html; charset=UTF-8"); $expires = 60 * 20; //session 超时时间 function check_user_agent() //构造函数检查 User-Agent 的一致性 { if (isset($_SESSION['HTTP_USER_AGENT'])) { if ($_SESSION['HTTP_USER_AGENT'] != md5($_SERVER['HTTP_USER_AGENT'])) //user-agent 不一致 { exit('客户端信息异常'); } } else { $_SESSION['HTTP_USER_AGENT'] = md5($_SERVER['HTTP_USER_AGENT']); } } function start_session($expire = 0) { session_start(); if ($expire != 0 && isset($_SESSION['last_visit'])) { $time_last = time() - $_SESSION['last_visit']; if (isset($_SESSION['expiretime'])) //如果超时 { session_unset(); session_destroy(); exit("<a href='login.html'>请重新登录</a>"); } } $_SESSION['last_visit'] = time(); //检查 user-agent 一致性 session_regenerate_id(true); //重置 SessionID } ?>
时间: 2024-04-28 18:20:42 浏览: 126
完美解决PHP中文乱码
这段代码定义了两个函数 `check_user_agent()` 和 `start_session()`,并设置了 session 超时时间为 20 分钟。
`check_user_agent()` 函数用于检查客户端浏览器的 User-Agent 是否一致。如果已经存在 session,并且 session 中保存的 User-Agent 与当前请求的 User-Agent 不一致,则认为客户端信息异常,直接退出并输出错误信息。如果 session 中不存在 User-Agent,则将当前请求的 User-Agent 进行 MD5 加密并保存到 session 中。
`start_session()` 函数用于启动 session,并进行一些超时检查。如果 `$expire` 参数不为 0,表示 session 超时时间为 `$expire` 秒。如果 session 已经存在,并且距离上次访问时间超过了超时时间,则销毁 session 并输出重新登录的链接。函数还会更新 session 的访问时间并重置 session ID。
需要注意的是,这段代码只是 session 的简单实现,并没有考虑到其他安全问题,比如 CSRF、XSS 等攻击。在实际应用中需要根据实际情况进行完善。
阅读全文