调用未定义的函数isLoggedIn()

时间:2014-01-10 12:06:08

标签: php

我不明白为什么没有根据我收到的错误定义isLoggedIn();函数。我有两个页面,一个是.php,其中定义了函数,一个.phtml,我遇到了问题。以下是两者的代码。

public function isLoggedIn() {
 if(!session_id()) {
     return false;
 }
 else
 {
     return true;
 }
 }

上面是.php,它显示了它的功能。

<?php
   $is_logged_in = isLoggedIn();
   if($is_logged_in) {
     echo '<li><a href="logout.php">Logout</a></li>';
   }
   else {
     echo '<li><a href="login.php">Login</a></li>';
   }
?>

上面是.phtml,据我所知,这应该有效。

.phtml文档的顶部有

<?php require ('Models/SessionData.php');

函数定义的名称和位置。

在IDE上没有任何错误迹象。

帮助将不胜感激。

4 个答案:

答案 0 :(得分:2)

正如我在评论中所解释的那样,isLoggedIn()似乎是一个类的一部分(因此是public关键字)。你不能简单地自己调用对象方法(除非它们是静态的)。您需要实例化类所属类型的新对象。

似乎isLoggedIn()只检查session_id(),因此您可以轻松地将其推断到您的代码中并简化整个过程。您的PHTML代码段可以使用ternary operator重写为:

echo (session_id()) ? '<li><a href="logout.php">Logout</a></li>' : '<li><a href="login.php">Login</a></li>';

虽然已经说过了,但这个方法可能是出于某种原因而出现在课堂上。

答案 1 :(得分:1)

删除单词public

function isLoggedIn() {
    if (!session_id()) {
       return false;
    } else {
        return true;
    }
}

虽然您应该遵循其他人的建议并查看课程

答案 2 :(得分:0)

isLoggedIn()public函数,意味着您必须使用对象来访问该函数。 (OOP)

要调用fhe函数,必须存在SessionData的对象:

示例:

$session = new SessionData();
$is_logged_id = $session->isLoddedIn();

检查所包含脚本中的对象,它可能已经实例化(某些全局变量)。

答案 3 :(得分:-2)

将其更改为

class logging{
public function isLoggedIn() {
     if(!session_id()) {
         return false;
     }
     else
     {
         return true;
     }
     }
}

然后将其他部分更改为

$is_logged_in = new logging;
if($is_logged_in->isLoggedIn()) {

那应该有用