2010-11-03 35 views
2

另一個PHP/MySQL用戶管理問題。它用於圖像編輯器,因此每個用戶在註冊時都應該有自己的「空間」,即用戶目錄(USERDIR),並且該目錄下的任何內容都應該僅供相關用戶訪問。相當簡單的一步,但我似乎無法找到正確的關鍵字來搜索教程。PHP/Mysql用戶管理與自定義目錄問題

我想實現它的方式是在MySQL數據庫中有一個「USERID」和「PASSWORD」(md5散列)端的「USERDIR」列(儘管我知道USERDIR是一個冗餘密鑰,如果USERID也是唯一的 - 這是一個值得擔心的問題嗎?即我可以將USERID指定爲目錄名稱,而不是生成唯一的隨機目錄名稱)。然後如何「檢查」用戶是否有權訪問他們的目錄(即,如何編碼它以檢查sessionID/cookie檢查以阻止其他用戶轉到mysite.com/USERID或mysite.com/USERDIR) 。我感謝這對你們中的一些人來說是非常基本和重複的,但我似乎無法在任何地方找到相關教程!任何幫助非常感謝。

回答

0

是的,只需使用基於UserID的圖像文件存儲。但是,請確保在函數調用中包裝了對userdir位置的請求,以防需要更改它以處理目錄文件限制。例如,假設$ imageName是您嘗試存儲或檢索的圖像的名稱。

$userDir = getUserDir($userID); 
$imgLink = 'http://' .$hostname .'/' . $userDir . '/' . $imgName; 

function getUserDir($userID) 
{ 
    return 'images/' . $userID; 
} 
+0

謝謝,這是有道理的,我不會硬編碼的圖像路徑。如果您也可以建議SWF編輯器安全繞過問題(請參閱下面的Niggles評論),我將不勝感激。 – dfx 2010-11-03 22:14:56

0

你也可以成爲了通過PHP的圖像,以確保有一個網頁,如不可見路徑將圖像

$imagepath= 'some-input-file.jpg'; 
$image=imagecreatefromjpeg($imagepath); 
header('Content-Type: image/jpg'); 
imagejpeg($image, '', 90); 

你要知道,這並不能阻止其他人觀看圖像,如果他們在找到真正的鏈接 - 爲此,您可能需要使用.htaccess

+0

謝謝,是的,我打算編輯圖像的實際鏈接是可以鏈接的,我只是不希望Flash編輯器(它將加載圖像)可供非特權用戶訪問。然而,問題在於編輯器在Flash中,所以我想我需要對Flash進行USERID檢查,就好像有人獲得了SWF的鏈接,他們可以繞過所有的PHP安全性。或者有更簡單的方法來使用mod_rewrite禁用直接訪問swf編輯器? – dfx 2010-11-03 22:11:37

+0

我會做2件事 - 讓Flash發送一個$ _POST請求,希望得到特定的響應來驗證用戶是否登錄。但這並非萬無一失。在實際執行move_uploaded_file之前(您需要在某個階段執行此操作),您應該檢查是否有權上傳並設置上傳路徑。這樣,即使有人進入Flash,沒有正確的憑據,也無法上傳任何內容。 – niggles 2010-11-04 21:47:48