Php会话不起作用

时间:2011-01-12 07:53:46

标签: php session mamp

我是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等之前。

6 个答案:

答案 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)

如果您无法查看可以编写的会话ID,请在代码中

session_id()取代SID

答案 5 :(得分:0)

ini_set("session.use_cookies",1);
ini_set("session.use_only_cookies",1);

如果你希望它起作用,这两个参数必须设置为