如何检查访问者是否已登录,如果是,则设置变量以确定进一步的操作

时间:2013-08-30 15:17:32

标签: 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';
    }
       ?>

我尝试但没有工作的是在第一个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';
    }
       ?>

我在头模块中有上面的代码。但是,当我在以后在同一页或文中其他模块,如果我使用的PHP代码它不识别$构件的状态,并始终判断在不登录的用户。

我做错了什么?我猜它的变量范围,我检查了我的PHP书但找不到错误。任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:1)

您已拨打$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';
}

答案 1 :(得分:1)

您可以在一行中执行此操作,重构代码将是

  $member = (JFactory::getUser()->id) ? true : false ;