我想創建一個函數來創建一個目錄來存儲照片在文件系統中。假設根目錄中有一個名爲「albums」的目錄。頁面上有一個表單,允許用戶創建一個新的相冊,該相冊將在「相冊」下創建一個子目錄。如何在使用PHP調用mkdir之前驗證目錄名稱?
我也想有嵌套相冊的能力。創建新相冊時,管理員可以使用正斜槓(/
)分隔符以遞歸方式創建該文件夾結構來提供相冊名稱。
我使用的目錄,是因爲我想通過直接訪問FTP服務器用於處理大量相冊管理相冊的能力。每個照片目錄可以有一個可選的album.properties
文件,以將任何元數據與相冊本身相關聯(例如用於相冊的縮略圖)。
if (!is_admin()) die();
$album_name = $_GET['album_name'];
if ($album_name) {
$directory = "/albums/" . $album_name;
// TODO: How can I validate $album_name?
if (file_exists($directory)) {
echo "Album already exists, please choose a different name.";
} else if (mkdir($album_name), 0777, true) { // Recursive is true
echo "Album successfully created.";
} else {
// TODO: Is there a way to output a more detailed explanation?
echo "The album could not be created.";
}
}
請參閱PHP代碼中的TODO
標記。此外,如果您對我的方法有任何建議,那將是有用的。
請注意,直到最近我才決定使用目錄和屬性文件而不是數據庫表來存儲與相冊/照片相關的元數據,因爲我最近才發現客戶端希望使用FTP。
我仍然需要有數據庫表,不過,允許管理員將權限分配給現有的相冊。例如,管理員可以與公衆或其他非管理員用戶共享特定專輯。 /albums
目錄不會直接訪問,而是另一個.php
將允許下載照片或讀取元數據,但僅限於授權用戶。
編輯:
添加上我想要的東西更多的澄清:
要驗證
$album_name
是有效的目錄名,如果它是無效的我想輸出的錯誤信息。另外我想向用戶解釋如何選擇一個有效的目錄名稱。我想輸出更詳細的消息,如果MKDIR失敗,告訴他/她可以做,以糾正問題的用戶。
「我如何可以驗證$ ALBUM_NAME?」 「確認」是什麼意思?你有什麼嘗試? –
我不知道這是否正是你所說的,但我做了一個谷歌搜索,並找到一個函數,指出是否存在一個文件/目錄:http://us3.php.net/file_exists – donsiuch
我有澄清後修改了該職位。 – codefactor