任何人都可以请你解释一下这是怎么回事?

时间:2013-11-19 20:26:42

标签: php session

我创建了一个类似account_details.php的页面,其中我计算用户访问该页面的次数。所以为此,我创建了一个名为count_session.php的文件,代码如下:

<?php
    session_start();

    if(!isset($_SESSION['counter'])){
        $_SESSION['counter'] = 0;
    }else{
        $_SESSION['counter'] = $_SESSION['counter'] + 1;
    }
?>

我在account_details.php页面中包含上述文件,我希望用户看到他访问了多少次并且工作正常但我不明白它是如何工作的?我已经检查了第一个'if'条件里面的echo消息if if(!isset)并且它似乎没有进入那个条件而是进入了else部分但是接下来它是如何被初始化为0,但是当用户访问account_details.php页面,弹出的消息如“您已访问此页面1次”。为什么它在count_session.php文件中的任何地方尚未初始化时计算0 + 1。有人可以告诉我吗?

2 个答案:

答案 0 :(得分:1)

这与会话变量无关,因为它对常规变量的工作方式相同。

如果您编写$a = $a + 1之类的内容且$a未在任何地方声明,则PHP认为它未设置,如果转换为int,则转换为0(与转换为false如果施放给bool,但在这种情况下不相关)。你的变量被强制转换为int的原因是PHP认为需要,因为你试图对该变量执行数学运算。

总结一下:PHP检测到您想要添加2个值,执行类似intval($a)的操作(当然在内部)并添加1。此外,如果您已启用通知,则应该通知您。

答案 1 :(得分:0)

会话对于站点是全局的(如在主机名中),因为它们由存储在cookie中的ID标识,默认情况下将其发送回单个域名下的所有URL。您可以进一步限制,但这是默认行为。