2008-12-29 45 views
0

我有一个名为User的类,其中包含静态函数loginRequired(),如果用户已登录,则返回false;如果用户已注销,则返回true。它还将错误追加到我创建的错误类中,该错误类告诉使用该网站的用户必须登录才能查看内容。PHP从另一个文件中的函数返回

的想法是,这将要求用户先登录各功能的顶部,我们写这样的代码:

if(User::loginRequired()) return; 

将输出错误并立即从函数返回。我宁愿做这个,但是:

User::loginRequired(); 

而且从loginRequired函数内调用函数返回......但因为loginRequired()是在一个单独的文件中单独的一类,这是不行的。是否有可能从loginRequired()中调用loginRequired()函数返回?

谢谢。

回答

3

我已经看到了一些开源的应用程序的方式来处理,这是由具有require_login()函数执行重定向如果用户没有登录。

5

我不确定你可以做到你想要的,但是,你可能想看看使用exceptions。这将允许您在User :: loginRequired函数中引发异常,并在更高级别捕获它。你也可以看看使用PHP函数exit()

0

距离实际的页面动态内容?我的意思是,我需要进行身份验证才能看到除登录页面以外的其他任何内容,或者我在登录时看到了一些内容,而在我没有登录时看到其他内容,等等。因为如果服务器的整个目录/部分位于登录屏幕后面,您可以在目录的.htaccess文件中添加一些内容,以重定向任何未登录的人等。

另一方面,您可以让该文件保持登录状态包含在用户正在查看的任何页面/脚本中,所包含的文件仅返回登录状态而不是其全部内容。这在includes下的例子5下的“include()和return()语句”中有介绍。如果你这样做,你可以使用这样的三元条件:

$logged_in = (include('userlogin.php') == TRUE) ? TRUE : FALSE; 

然后在每个受保护的功能有类似:

global $logged_in; 

你还是坚持了一个IF子句环绕整个功能,但至少你有登录状态。如果你想摆脱函数内部的IF,你总是可以调用函数conditional。像:

$content = ($logged_in == TRUE) ? some_function() : redirect_User(); 

话又说回来,我刚开始2个月前学习这些东西,还是不明白类和对象,所以我可能是大错特错。

0

OT:如果您描述的目的是唯一的,我会考虑将方法的名称更改为isLoggedIn()。称为loginRequired()的方法会更好地保护机密内容。

相关问题