我有一個joomla網站。並有一些pdf文件到網站的根目錄。阻止訪客用戶直接訪問PDF鏈接
有沒有一種方法可以保護直接訪問的客人(公共)用戶的PDF文件?並允許註冊用戶?
我試過htaccess(拒絕),但註冊用戶也無法直接查看pdf .. 已搜索但沒有發現任何關於此..請有人幫忙。
謝謝
我有一個joomla網站。並有一些pdf文件到網站的根目錄。阻止訪客用戶直接訪問PDF鏈接
有沒有一種方法可以保護直接訪問的客人(公共)用戶的PDF文件?並允許註冊用戶?
我試過htaccess(拒絕),但註冊用戶也無法直接查看pdf .. 已搜索但沒有發現任何關於此..請有人幫忙。
謝謝
您必須使用文檔管理插件,如果你不會想要寫自己的PHP codes.SO,DOCman是爲Joomla強大的文件管理解決方案。您可以從以下鏈接查看它。
http://extensions.joomla.org/extensions/directory-a-documentation/downloads/10958
在.htacess文件,你必須添加以下代碼
所有
否認它應該在PDF文件所在的文件夾發票下進行定位。
如果您使用全部拒絕,那麼文件不具有htacess文件所在的特定目錄的下載訪問權限。
要允許註冊用戶下載訪問,必須調用以下控制器而不是直接文件路徑url。
URL例如: - www.example.com/index.php?option=com_temp &任務= temp.downloadmypdf &文件=文件名
public function downloadmypdf(){
$user = JFactory::getUser();
$getfile = JRequest::getVar('file');
if($user->get('id') == 0){
die('permission denied');
}
$link = "/invoice/".$getfile.".pdf";
$file = JPATH_SITE.$link;
header("Content-Type: application/octet-stream");
$filename = $getfile.'.pdf';
header("Content-Disposition: attachment; filename=".urlencode($filename));
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header("Content-Description: File Transfer");
header("Content-Length: " . filesize($file));
flush(); // this doesn't really matter.
$fp = fopen($file, "r");
while (!feof($fp))
{
echo fread($fp, 65536);
flush(); // this is essential for large downloads
}
fclose($fp);
JFactory::getApplication()->close();
}
現金去Ashlin rejo。
謝謝。你能告訴我在哪裏可以添加這個功能嗎?在模板的index.php中? –
您能否告訴我如何通過手動添加pdf文件或者您是否使用任何組件來保存文件。 – Selvaraj
不,這個pdf是在「root/files /」文件夾中手動添加的。 –
創建一個名爲的download.php
文件中添加以下代碼的download.php文件用PHP標籤封裝
define('_JEXEC', 1);
define('DS', DIRECTORY_SEPARATOR);
if (file_exists(dirname(__FILE__) . '/defines.php')) {
include_once dirname(__FILE__) . '/defines.php';
}
if (!defined('_JDEFINES')) {
define('JPATH_BASE', dirname(__FILE__));
require_once JPATH_BASE.'/includes/defines.php';
}
require_once JPATH_BASE.'/includes/framework.php';
// Mark afterLoad in the profiler.
JDEBUG ? $_PROFILER->mark('afterLoad') : null;
// Instantiate the application.
$app = JFactory::getApplication('site');
// Initialise the application.
$app->initialise();
$user = JFactory::getUser();
$getfile = JRequest::getVar('file',null,'get','string');
if($getfile){
if($user->get('id') == 0){
die('permission denied');
}
$link = "/files/".$getfile.".pdf"; // Locate the pdf file
$file = JPATH_SITE.$link;
header("Content-Type: application/octet-stream");
$filename = $getfile.'.pdf';
header("Content-Disposition: attachment; filename=".urlencode($filename));
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header("Content-Description: File Transfer");
header("Content-Length: " . filesize($file));
flush(); // this doesn't really matter.
$fp = fopen($file, "r");
while (!feof($fp))
{
echo fread($fp, 65536);
flush(); // this is essential for large downloads
}
fclose($fp);
}
$app->close();
URL例如: - www.example.com/download.php?file = filename
並確保您已根據需要更改$ link變量。
這只是幫了我很大的忙,謝謝!即使與Joomla 1.5一起工作。不要忘記在.htacess文件中添加拒絕規則。 –
您無法檢測到用戶已登錄或沒有使用htaccess文件,它將需要PHP。首先編寫腳本來檢測用戶是否已登錄,在根目錄中獲取PDF文件陣列,檢測文件名是否在URL中,然後進行相應的重定向。這些任務中的每一個都可以通過簡單的Google搜索找到。如果遇到特定的編碼問題,請發佈另一個問題。 – Lodder