登錄我有一本雜誌的在線服務那些誰買了它提供圖片。我需要在<img src="...">
中使用某種serve-image.php?img=page1.jpg
,這將從公衆無法訪問的目錄中提取圖像。這部分解決了。沒有想到的是如何從serve-image.php
文件中檢查用戶是否登錄到WordPress(併購買了該物品)。我是否必須爲此創建一些簡單的API?有沒有我沒有想到的東西?PHP - WordPress的 - 如果客戶在
感謝您的任何答案!
登錄我有一本雜誌的在線服務那些誰買了它提供圖片。我需要在<img src="...">
中使用某種serve-image.php?img=page1.jpg
,這將從公衆無法訪問的目錄中提取圖像。這部分解決了。沒有想到的是如何從serve-image.php
文件中檢查用戶是否登錄到WordPress(併購買了該物品)。我是否必須爲此創建一些簡單的API?有沒有我沒有想到的東西?PHP - WordPress的 - 如果客戶在
感謝您的任何答案!
我建議以下方法:
創建.htaccess
文件在受保護的圖像文件夾會被重定向所有呼叫與請求的圖像路徑索引(你可以使用相對路徑)作爲參數serve_image
:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase/
RewriteRule ^index\.php$ - [L]
RewriteRule (.*) /index.php?serve_image=$1 [L]
</IfModule>
Options All -Indexes
IndexIgnore *
然後,在你的插件或functions.php中包括由它掛接到parse_request
措施的訪問檢查(這是你會在你的serve-image.php
-file已經使用的代碼):
add_action('parse_request', 'check_file_access');
// function to check access and serve image
function check_file_access() {
if(!isset($_GET['serve_image')){
return false;
}
// Check access
if(!is_user_logged_in()){
die('Sorry! No access!');
}
// sanitize here (only allow paths that are inside your specified folder)
$image_path = $_GET["serve_image"];
// get content type
$finfo = finfo_open(FILEINFO_MIME_TYPE);
$content_type = finfo_file($finfo, $image_path);
finfo_close($finfo);
// construct file name
$filename = basename($image_path,'.'.$finfo['extension']);
header('Content-type: '.$content_type);
header("Content-Disposition: attachment; filename=".$filename);
readfile($image_path);
exit();
}
現在,如果你想顯示受保護的圖像之一,你可以簡單地在src
屬性使用常規的圖像的路徑。圖像源將被拒絕給無權訪問的用戶。
你用什麼系統爲你的店鋪?要檢查訪問者是否登錄,可以調用'is_user_logged_in()',如果用戶登錄,它將返回'true'。您是否已經有權訪問'serve-image.php範圍內的Wordpress功能'? – xphan
我使用WooCommerce。我在尋找一種方式將圖像數據傳遞到''本質,就我所看到的,唯一的方法是創建'服務,image.php'腳本時,我必須以某種方式檢查用戶是否登錄併購買了這個東西。而且我無法從外部文件訪問WP。也許使用一些頁面,並在那裏有一個簡碼,所以它沒有超出範圍? – iSS