由于奇怪的问题,页面是白色筛选

时间:2011-08-31 16:21:35

标签: php oop

我在同一个类中有这三个函数:

public function checkLogin() {
    if(isset($this->getSessionVal())) {
        return true;
    } else {
        return false;
    }

}

public function getSessionVal($type = 'user') {
    return $this->sanitise($_SESSION[$type]);
}

public function sanitise($input) {
    $input = trim($input);

    if (get_magic_quotes_gpc()) {
         $input = stripslashes($input);
    }

    if($this->conn) {
        $input = mysql_real_escape_string($input);  
    }

    $input = strip_tags($input);

    return $input;
}

当我使用上面的白屏并且什么都不打印时,通常是语法错误,但它不是语法(Dreamweaver没有显示任何内容,我确定它不是。如果我将checkLogin更改为以下内容:

public function checkLogin() {
    if(isset($_SESSION['user'])) {
        return true;
    } else {
        return false;
    }

}

清理功能很好,我从getSessionVal中取出它仍然是白色筛选的。我完全困惑,对我来说没有任何意义所以我有一个想法(我知道我可以按照它的工作方式去做,但我想知道为什么这不起作用)。

提前致谢!

2 个答案:

答案 0 :(得分:2)

 if(isset($this->getSessionVal())) {

isset()是一种语言结构。您不能将函数调用作为参数传递给它。

激活错误报告 - 您应该收到错误消息。

作为解决方法,您可以例如如果未设置会话变量,则getSessionVal()返回false。 (当然,如果false不是您返回的值的可能值。)

然后,您可以将isset移至getSessionVal(),并在false中测试checkLogin()

答案 1 :(得分:0)

在类中调用其他方法时删除isset()

public function checkLogin() {
    if($this->getSessionVal()) {
        return true;
    } else {
        return false;
    }

}