簡體   English   中英

JFactory getUser隨機不在包裝器中工作

[英]JFactory getUser randomly not working in wrapper

我正在使用舊的1.5.26 Joomla安裝。 我為該站點開發了一個Web應用程序,將其嵌入到joomla包裝器中,並決定使用joomla用戶管理進行訪問(在此處插入撞牆的聲音)。

我用了一個簡單的代碼:

<?php
define( '_JEXEC', 1 );
define('JPATH_BASE', dirname((dirname(__FILE__))));
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();

$usuario= JFactory::getUser();
$idUsuario=$usuario->id;
$nombreUsuario=$usuario->name;

if ($idUsuario==0)
{
     echo "<p>Error: no tiene permiso</p>";
     die ();
}
else
{
    echo "<p>Hola, $nombreUsuario.</p>";
}
/* And the script goes on... */

問題是,一切正常。 我在具有多個Web瀏覽器(甚至是iPad)的多台計算機中對其進行了測試,它似乎可以正常工作。 我很開心……直到我開始生產並允許真正的用戶訪問它。

全面徹底的災難。 許多用戶(很多用戶)收到“錯誤”消息,jFactory :: getUser為他們返回0。 我使用他們的用戶名和密碼進行嘗試,效果很好。 他們從盡頭嘗試,但沒有嘗試。

僅當我將腳本嵌入包裝器時才會發生這種情況。 如果我讓用戶通過直接鏈接到應用程序目錄的方式訪問Web應用程序,問題將消失。

有誰對為什么會發生有絲毫想法?

提前致謝。

您發出的問題與此問題相同。 如何將Joomla參數傳遞到iframe(包裝器)頁面? 答案建議將其包含在腳本中:

<?php
define('_JEXEC', 1 );
define('JPATH_BASE', $_SERVER['DOCUMENT_ROOT'] ); 
define( 'DS','/' );

require_once ( JPATH_BASE.DS. 'includes'.DS.'defines.php' );
require_once ( JPATH_BASE.DS.'includes'.DS.'framework.php' );
require(JPATH_BASE.DS.'libraries/joomla/factory.php');

$mainframe =& JFactory::getApplication('site');
$mainframe->initialise();
?>

以及與此相關的代碼(與您的代碼幾乎相同): 在包裝器中獲取用戶信息

define( '_JEXEC', 1 );
define( 'JPATH_BASE', realpath(dirname(__FILE__).'/../' ));  
require_once ( JPATH_BASE .'/includes/defines.php' );
require_once ( JPATH_BASE .'/includes/framework.php' );

$mainframe = JFactory::getApplication('site');


    $user = & JFactory::getUser();

這對我無處不在。 只需注意/../,如果要放入iframe的文件具有更高的級別,則可以添加更多/../的

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM