【发布时间】:2015-05-24 21:55:52
【问题描述】:
我有这个功能:
public static function sessionStart()
{
try {
if (ini_get('session.use_cookies') && isset($_COOKIE['PHPSESSID'])) {
$sessid = $_COOKIE['PHPSESSID'];
} elseif (!ini_get('session.use_only_cookies') && isset($_GET['PHPSESSID'])) {
$sessid = $_GET['PHPSESSID'];
} else {
session_start();
return false;
}
if (preg_match('/[^a-zA-Z0-9\-]{32}/i', $sessid)) {
return false;
}
session_start();
return true;
} catch (Exception $ex) {
return false;
}
}
但是,在某些情况下,session_start 仍会引发警告。我如何验证会话 ID,这样我就永远不会收到警告?当我将 PHP 版本从 5.3 更改为 5.6 时,问题开始蔓延。
警告:
会话ID过长或包含非法字符,有效 字符是 a-z、A-Z、0-9 和 '-,'
【问题讨论】:
-
警告是什么?
-
我已将警告添加到问题中
标签: php session session-state