Php 如何检查访问者是否已登录,如果是,请设置一个变量以确定进一步的操作
我使用的是Joomla 2.5,在我的站点头部有一个模块,代码如下:Php 如何检查访问者是否已登录,如果是,请设置一个变量以确定进一步的操作,php,joomla,joomla2.5,Php,Joomla,Joomla2.5,我使用的是Joomla 2.5,在我的站点头部有一个模块,代码如下: <?php $user =JFactory::getUser()->guest; if ($user->guest) { echo 'Please sign up or sign in to view this' } else { echo 'Here is the content'; } ?> 我尝试但没有成功
<?php
$user =JFactory::getUser()->guest;
if ($user->guest) {
echo 'Please sign up or sign in to view this'
}
else {
echo 'Here is the content';
}
?>
我尝试但没有成功的是在第一个if语句中添加变量$member。如果此人未登录以向其显示回显,但也将$member设置为==true
我为什么要这么做?我认为,如果我检查$member的状态,会使站点加载更快,而不是调用Joomla API来确定用户是否登录
确定访问者是否是每个页面中的成员的调用大约为5-7次。当我使用JFactory::getUser()函数(上面的所有代码)5-7次时,它确实会使网站的速度减慢一点。这就是为什么我想在第一次调用中创建$member==true。如果我认为这在站点性能/速度方面会更好,请纠正我的错误
我试过这个:
<?php
$user =JFactory::getUser()->guest;
if ($user->guest) {
echo 'Please sign up or sign in to view this'
$member == true;
}
else {
echo 'Here is the content';
}
?>
我在header模块中有上面的代码。但是,当我稍后在同一页面的其他模块中或在文章中使用php代码时,它不会识别$member的状态,并且总是确定用户未登录
我做错了什么?我猜是变量范围的问题,我检查了我的PHP书籍,但没有找到错误。感谢您的帮助。您已经在呼叫
$user->guest
,请尝试更改:
$user = JFactory::getUser()->guest;
为此:
$user = JFactory::getUser();
作为替代方案,您也可以使用以下方法:
$user =& JFactory::getUser();
if($user->id=0){
echo 'Please sign up or sign in to view this'
$member == true;
}
else {
echo 'Here is the content';
}
您可以在一行中完成这项工作,重构代码将是
$member = (JFactory::getUser()->id) ? true : false ;
如果这一变化会产生任何可测量的影响,我会非常惊讶,更不用说重大影响了。请分享您的发现。$user=JFactory::getUser()->guest;如果($user->guest)没有意义$user=JFactory::getUser()如果($user->guest),为什么要使用
$member==true代码>?如果总是使用if($member=true){echo“内容”}
,只需使用if($user->guest){echo“内容”}
。当您可以使用内置Joomla方法时,分配另一个变量是没有意义的,因为分配变量$member
也必须进行此检查。GetUser实际上会缓存调用的每个用户id的结果(或者在本例中没有用户id,所以是当前用户)因此,每个后续调用都不必返回数据库。它应该与检查局部变量的速度一样快,除非您不会有任何范围问题,因为您可以在任何地方使用JFactory::getUser
。当然不会。而且可能也没有理由将布尔值指定给$user
。给Joomla开发人员一些信任:)(并查看工厂设计模式)