0
每个session_start()调用都会在会话文件夹中创建一个新的会话标识,但从未加载到下一页。“session_start()”生成新的会话标识,而不是加载可用的会话标识
我用来检查它的代码:
(没有代码,并且没有空格之前“在session_start();”,这是直接在上面)
<?php
session_start();
var_dump($_SESSION);
echo boolStr(is_writable(session_save_path())) . " and ";
echo boolStr(is_readable(session_save_path())) . "<br>";
if (!isset($_SESSION['counter'])){
$_SESSION['counter']=0;
}
echo "Refreshed: ". $_SESSION['counter'] ." times.<br>
$_SESSION['counter']++;
<a href=".$_SERVER['PHP_SELF'].'?'.session_name().'='.session_id().">refresh!</a>";
function boolStr($val)
{
return $val ? 'true' : 'false';
}
?>
计数器变量增加“$ _SESSION ['计数器'] ++;”但在加载刷新的页面后再次为0,并且会话ID在地址栏中改变。
输出:
D:\wamp64\www\sessions.php:4:
array (size=0)
empty
true and true
Refreshed 0 times.
refresh
的php.ini:
session.save_handler = files
session.save_path ="D:/wamp64/tmp"
session.use_strict_mode = 0
session.use_cookies = 1
session.use_only_cookies = 1
session.name = PHPSESSID
session.auto_start = 0
session.cookie_lifetime = 0
session.cookie_path =/
session.cookie_domain =/
session.cookie_httponly = 1
session.cookie_secure = 0
session.serialize_handler = php
session.gc_probability = 1
session.gc_divisor = 1000
session.gc_maxlifetime = 1440
session.referer_check =
session.entropy_length = 32
session.entropy_file = /dev/urandom
session.cache_limiter = nocache
session.cache_expire = 180
session.use_trans_sid = 0
session.hash_function = sha256
session.hash_bits_per_character = 5
会议是上个月工作正常,但是当我关闭浏览器(我冬眠PC和几乎从不关机) ,问题出现了。我并没有真正看到与浏览器的连接,但是因为我之后使用Chrome尝试了它,而不是使用Firefox,它也遇到了同样的问题。
如何知道session_start()尝试加载会话cookie时会发生什么?如果我能够看看session_start()是如何工作的,也许我可以找出发生了什么。
谢谢。
在做'error_reporting(E_ALL);'你会返回什么? – Kray
我不知道我是否做错了,所以我把它放在session_start()下面一次,并且一次在它上面,并且两次都没有得到任何错误。 – Ibos
尝试将echo语句上方的$ _SESSION ['counter'] ++移动到变量中。例如:$ session_counter = $ _SESSION ['counter'] ++; –