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