2016-12-25 81 views
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()是如何工作的,也许我可以找出发生了什么。

谢谢。

+0

在做'error_reporting(E_ALL);'你会返回什么? – Kray

+0

我不知道我是否做错了,所以我把它放在session_start()下面一次,并且一次在它上面,并且两次都没有得到任何错误。 – Ibos

+0

尝试将echo语句上方的$ _SESSION ['counter'] ++移动到变量中。例如:$ session_counter = $ _SESSION ['counter'] ++; –

回答

0

经过一天多的努力找出没有结果,我想我可能会安装和使用XAMPP,而会话在那里工作,所以问题必须从WAMP服务器出来。