检查会话是否处于活动状态

时间:2010-04-26 00:20:20

标签: php session

我正在构建一个验证码类。我需要将生成的代码存储在PHP会话中。到目前为止,这是我的代码:

<?php

class captcha
{
    private $rndStr;
    private $length;

    function generateCode($length = 5)
    {
        $this->length = $length;
        $this->rndStr = md5(time() . rand(1, 1000));
        $this->rndStr = substr($rndStr, 0, $this->length);

        if(session_id() != '')
        {
            return "session active";
        } else {
            return "no session active";
        }
    }
}

?>

使用此代码检查:

<?php

include('captcha.class.php');
session_start();

$obj = new captcha();
echo $obj->generateCode();

?>

但它不会向页面输出任何内容,甚至不会输出PHP错误。有人知道这是为什么吗?是否有更好的方法可以检查我是否使用session_start()启动会话?

感谢。

3 个答案:

答案 0 :(得分:0)

$this->rndStr = substr($rndStr, 0, $this->length); 
        return $rndStr;  //You return before the if statement is processed
        if(session_id() != '') 
        { 
            return "session active"; 
        } else { 
            return "no session active"; 
        } 

回答上面的注释代码

编辑:你改变了你的问题并删除了返回行,对于那些打扰回答的人来说并不好:)

答案 1 :(得分:0)

我正在测试你的课程,在这里似乎没问题,在页面上激活会话,也许你想尝试这一行:

include(dirname(__FILE__).'/captcha.class.php');

答案 2 :(得分:0)

您确实有错误,因此我建议您检查错误报告级别并显示错误设置 - 有很多关于如何执行此操作的简短教程。

  

注意:未定义的变量:rndStr in   /home/eric/localhost/test.php在线   12

当然这是因为你写了$rndStr而不是$this->rndStr

当我运行你的代码时,除了错误之外,我看到了预期的输出。

  

会话有效

您是否能够在其他脚本中成功输出到浏览器?