我是php新手,对会话很新,所以我不知道我做错了什么。我按照tizag上的教程,将此代码放在我的网站上:
<?php
session_start();
echo SID . "<br><br>";
if(isset($_SESSION['views'])) {
$_SESSION['views'] = $_SESSION['views'] + 1;
} else {
$_SESSION['views'] = 1;
echo "views = ". $_SESSION['views'];
}
?>
每当我刷新时,SID都会改变,并且数字不会计数。
更新:网址:http://121.73.150.105/PIA/
FIXED BY:将session_start()放在我的doctype,title等之前。
答案 0 :(得分:1)
您的浏览器是否启用了Cookie? phpsessid存储为一个cookie,你可以为它设置不同的参数,一个在你的情况下可能有用的参数session_get_cookie_params(),并查看ifithing是否与会话cookie参数有关。
如果有任何错误,如失效日期,您可以使用session_set_cookie_params()
设置参数答案 1 :(得分:0)
您不会在if语句后输出$_SESSION['view']
。我认为这就是为什么它不会改变。
尝试:
<?php
session_start();
echo SID . "<br><br>";
if(isset($_SESSION['views'])) {
$_SESSION['views'] = $_SESSION['views'] + 1;
} else {
$_SESSION['views'] = 1;
}
echo "views = ". $_SESSION['views'];
?>
因此,您始终输出新的$_SESSION['views']
值。
编辑: 我认为正确的答案是没有设置会话。但我很好奇,代码怎么总输出“view = 1”?我可以打开一个引用这个问题的新问题,还是只在这里讨论一下?
答案 2 :(得分:0)
您的PHP设置可能已配置为不在Cookie中保存会话。
要验证是否是这种情况,您可以查看php.ini中的session.use_cookies,或使用ini_get,如下所示:
<?php echo ini_get('session.use-cookies'); ?>
您也可以在运行时使用ini_set进行更正,如下所示:
<?php ini_set('session.use-cookies', '1'); ?>
答案 3 :(得分:0)
要么在调用会话开始之前向浏览器输出内容,要么禁用cookie。
答案 4 :(得分:0)
session_id()
取代SID
。
答案 5 :(得分:0)
ini_set("session.use_cookies",1);
ini_set("session.use_only_cookies",1);
如果你希望它起作用,这两个参数必须设置为