我正在构建一个验证码类。我需要将生成的代码存储在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()
启动会话?
感谢。
答案 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
。
当我运行你的代码时,除了错误之外,我看到了预期的输出。
会话有效
您是否能够在其他脚本中成功输出到浏览器?