0

我正在运行 Joomla 3.1,并且在我创建的自定义组件中有一个选项,您可以在登录到导出 CSV 的 Joomla 管理后端时访问该选项。它链接到导出为 CSV(具有 MIME 类型)的 PHP 文件,并且数据是个人的和敏感的。因为这个链接文件是它自己的独立实体,有没有办法在这个 PHP 文件的开头包含一些 PHP 代码来检查用户是否以管理员身份登录,如果不是则拒绝访问?

4

4 回答 4

1

这就是我解决这个问题的方法。它几乎是来自 Joomla 的 /index.php!3.1 安装没有你不需要的所有东西。您必须查找要访问该文件的组 ID。此脚本只能在您的 Joomla! 的根目录下使用!按原样安装。

<?php
/**
 * @package    JoomlaSessionCustomScript.php
 *
 * @copyright  Copyright (C) 2013 Cecilomar Design, Inc. All rights reserved.
 * @license    GNU General Public License version 3 or later; see LICENSE.txt
 */

if (version_compare(PHP_VERSION, '5.3.1', '<'))
{
  die('Your host needs to use PHP 5.3.1 or higher to run this version of Joomla!');
}

/**
 * Constant that is checked in included files to prevent direct access.
 * define() is used in the installation folder rather than "const" to not error for PHP 5.2 and lower
 */
define('_JEXEC', 1);

if (file_exists(__DIR__ . '/defines.php'))
{
    include_once __DIR__ . '/defines.php';
}

if (!defined('_JDEFINES'))
{
    define('JPATH_BASE', __DIR__);
    require_once JPATH_BASE . '/includes/defines.php';
}

require_once JPATH_BASE . '/includes/framework.php';

// Instantiate the application.
JFactory::getApplication('site');

$jusersession = $_SESSION['__default']['user'];

///////////////////////////////////////////////////////////////////////////////////////////////////
// GroupID ////////////////////////////////////////////////////////////////////////////////////////
$groupid = 2; /////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////


if($jusersession->guest == true){
    echo "Hello guest. You need to login to see the content in this area.";
} else{
    if($jusersession->groups[$groupid] == $groupid){

///////////////////////////////////////////////////////////////////////////////////////////////////
// INCLUDE YOUR CODE OR SCRIPT HERE! ////////////////////////////////////////////////////////////// 
///////////////////////////////////////////////////////////////////////////////////////////////////



    echo "It works!</br><pre>"; 

    // Explore the session variables.
    print_r($jusersession);

    echo "</pre>";



///////////////////////////////////////////////////////////////////////////////////////////////////

    }
}

?>
于 2013-08-23T22:55:35.250 回答
1

拳头获取登录的用户对象。获取他的组 id。Joomla 2.5+ 中超级管理员的组 id 为 8。因此请检查用户的组 id=8 是否允许访问该页面。

$checkuser = JFactory::getUser();
$userGroups = $checkuser->get('groups');
if (in_array(8, $userGroups)){
  //allow access
}
于 2013-07-19T17:57:25.513 回答
0

为什么不将这个 PHP 文件包含到 Joomla 框架中,让它像普通视图一样工作呢?

如果你想有一个独立的脚本检查用户是否登录,你必须在你的文件中手动实例化 Joomla 框架并在那里进行检查。这可能比将脚本包含到 Joomla 中更多的工作:-)

于 2013-07-18T06:06:49.267 回答
0

像这样的东西:

if($admin){
    //allow access
} else {
    //deny access
}

$admin是占位符,需要替换

于 2013-07-16T18:42:46.653 回答