基于joomla身份验证限制对脚本的直接访问

时间:2010-08-12 07:15:08

标签: php authentication joomla

您好我找到了Aron Rotteveel脚本:

<?php

$file = $_GET['file'];
$fileDir = '/path/to/files/';

if (file_exists($fileDir . $file))
{
    // Note: You should probably do some more checks 
    // on the filetype, size, etc.
    $contents = file_get_contents($fileDir . $file);

    // Note: You should probably implement some kind 
    // of check on filetype
    header('Content-type: image/jpeg');

    echo $contents;
}

&GT;

是否有可能根据joomla用户会话为此添加身份验证?我的意思是当用户登录我的网站时,他可以访问此脚本,但无法直接访问。

抱歉我的英文。

1 个答案:

答案 0 :(得分:0)

首先,您应该限制从Joomla框架外部访问您的脚本。您可以在代码的开头粘贴此代码:

// No direct access
defined( '_JEXEC' ) or die( 'Restricted access' );

其次,如果您只想测试访问脚本的用户是否已登录,则可以使用此代码:

$user =& JFactory::getUser();
if ($user->guest) {
  echo "<p>Please login to download.</p>";
}
else {
  //put the download code here
}

如果通过限制直接访问意味着阻止用户只是放入脚本文件的URL,那么您应该以适当的方式实现它。在joomla的情况下,porper方式将是创建MVC组件。这是一个很好的资源来自官方joomla文档,可以帮助您入门:Developing a MVC Component