我不明白为什么没有根据我收到的错误定义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上没有任何错误迹象。
帮助将不胜感激。
答案 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()) {
那应该有用