我在同一个类中有这三个函数:
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中取出它仍然是白色筛选的。我完全困惑,对我来说没有任何意义所以我有一个想法(我知道我可以按照它的工作方式去做,但我想知道为什么这不起作用)。
提前致谢!
答案 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;
}
}