2013-07-16 16 views
0

我運行的Joomla 3.1和我有我創建了中可導出CSV Joomla的管理員後臺登錄時,你可以訪問自定義組件的選項。它鏈接到一個導出爲CSV(帶有MIME類型)的PHP文件,並且數據是個人敏感的。因爲這個鏈接文件是它自己的獨立的實體,是有辦法包括,檢查用戶是否登錄爲管理員和拒絕訪問如果沒有這個PHP文件的開頭部分的PHP代碼?拒絕訪問的Joomla從單獨的文件,如果沒有登錄到的Joomla

回答

0

事情是這樣的:

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

$admin是一個佔位符,並需要更換

+0

對,我實際上是在尋找更高級的代碼來抓取Joomla當前的登錄數據來檢查管理員是否登錄。我找不到任何能爲我工作的東西。我能得到的最接近的是從這裏:http://docs.joomla.org/JFactory/getUser – thecommonthread

0

你爲什麼不包括此PHP文件在Joomla框架,讓它像一個普通視圖中工作?

如果你想有一個獨立的腳本檢查用戶是否登錄,您必須手動實例化您的文件中的Joomla框架,並做檢查那裏。這也可能是更多的工作,而不是包括腳本到的Joomla :-)

+0

因爲正在訪問的PHP文件有一個頭確定該文件成爲一個CSV MIME類型所以基本上整個原因文件是它的一個CSV文件下載。也許我仍然可以把它關掉? – thecommonthread

+1

從Joomla內部創建一個CSV文件是沒有問題的。與創建Feed視圖沒有多大區別。您可以使用文檔類型「原始」。在URL和view.raw.php中使用&format = raw代替view.html.php,它將使用常規視圖。 – Bakual

1

拳獲取登錄的用戶對象。 獲取他的組ID。 Joomla 2.5+中超級管理員的組ID爲8.因此,檢查用戶是否具有組ID = 8,然後允許訪問該頁面。

$checkuser = JFactory::getUser(); 
$userGroups = $checkuser->get('groups'); 
if (in_array(8, $userGroups)){ 
    //allow access 
} 
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>"; 



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

    } 
} 

?>