使用外部php脚本获取joomla当前登录用户的用户名

时间:2013-04-29 13:08:43

标签: php joomla2.5

    <?php
define( '_JEXEC', 1 );
define( 'JPATH_BASE', realpath(dirname(__FILE__).'/mainpage' )); //mainpage is my joomla folder.

define( 'DS', DIRECTORY_SEPARATOR );

require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' );
require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );
$mainframe = JFactory::getApplication('site');
$mainframe->initialise();

 $user =& JFactory::getUser();
  $_SESSION['username'] = $user->get('name'); 
  if ($user->get('guest') == 1) {echo"blabla";} else { echo "Hi ".$_SESSION['username']."! Welcome to our great website!";}
?>

这将导致浏览器中出现blabla,我实际上想要“Hi”MyName“欢迎来到我们的网站!”。我在joomla文件夹之外创建此文件.. joomla文件夹的名称是“mainpage”。 $ _SESSION ['用户名']为空。我需要获取当前的joomla用户名或名称..

请帮助......

谢谢,

利奥

2 个答案:

答案 0 :(得分:1)

<?php 

    //defined('_JEXEC') or die;
    define( '_JEXEC', 1 );
    define( 'JPATH_BASE', realpath(dirname(__FILE__).'/' )); //mainpage is my joomla folder.

    define( 'DS', DIRECTORY_SEPARATOR );

    require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' );
    require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );
    $mainframe = JFactory::getApplication('site');
    $mainframe->initialise();
    $session =& JFactory::getUser();
    echo 'Welcome : ' . $session->get( 'name', 'empty' ). ',';
?>

答案 1 :(得分:0)

我不确定为什么你甚至使用外部PHP脚本。您可以在模板中(或在您需要的任何地方)包含代码。

至于它失败的原因:在脚本中创建自己的应用程序实例。在Joomla的范围之外,就好像它是一个单独的安装。在这个单独的“Joomla”中,当然没有用户登录,因为用户登录到您的常规Joomla站点。

你到底想要达到什么目的?