【发布时间】:2013-09-08 22:11:30
【问题描述】:
谁能解释这是否是 PHP 的正确行为,我期待 session_start() 返回 false 并收到警告说 session_name 包含非法字符。
要重现的代码:
<?php
session_name('m m');
var_dump(session_start());
if(!isset($_SESSION['count'])) {
$_SESSION['count'] = 0;
}
else {
$_SESSION['count']++;
}
echo session_name();
echo $_SESSION['count'];
运行一次:
bool(true) m m0
重新加载页面:
bool(true) m m0
应该是(如果会话正常):
bool(true) m m1
session_start() 返回 true,表示会话已开始。 $_SESSION['count'] 表示不起作用。会话名称中的非法字符没有警告。
我在手册页上找不到任何提示,也找不到会话有效字符的定义。
【问题讨论】:
-
把
var_dump(session_start());放在最上面 -
你必须在
session_start()之前调用session_name()。