我正在為一個網站的用戶創建一個 "洗掉帳戶 "的功能,如果他們想洗掉他們的所有詳細資訊。
從資料庫中洗掉相關記錄是非常直接的。然而,我想洗掉他們保存在網站圖片檔案夾中的圖片。
下面是我正在嘗試的代碼,其中一部分是基于@kmoser的建議。
//$db_image_id, $db_image_ext, $db_image_filename是在前一個代碼塊中獲取的,當圖片被輸出到頁面上時。
if(isset($_POST['delete-account']) {
$loggedInUser = $_SESSION['logged_in']。
$imagesLibrary = 'images-lib/'/span>;
$imagesDownload = 'images-download/';
try {
$s = $connection->prepare("SELECT filename FROM `imageposts` WHERE user_id = :user_id") 。
$s->bindParam(':user_id', $loggedInUser) 。
$s-> execute();
// -- 從'IMAGES-LIB'檔案夾洗掉用戶的圖片檔案。
while ($row = $s-> fetch()) {
if (isset($pattern) {
$pattern = $imagesLibrary . $row['filename'] 。'-{500、750、1000、1500}' . '。' . $row['file_extension'] 。
foreach (glob($pattern, GLOB_BRACE) as $filenames) {
unlink($filenames) 。
}
}
}
header("Location: index.php")。
} catch (PDOException $e) {
echo "錯誤。" 。$e->getMessage()。
}
}
上述代碼的關鍵部分是下面的這段代碼:
// -- DELETE IMAGE FILES FROM 'IMAGES-IB' FOLDER
while ($row = $s->fetch() ) {
if (isset($pattern) {
$pattern = $imagesLibrary . $row['filename'] 。'-{500、750、1000、1500}' . '。' . $row['file_extension'] 。
foreach (glob($pattern, GLOB_BRACE) as $filenames) {
unlink($filenames) 。
}
}
我最初得到一個錯誤PHP通知。 unefined index: file_extension in /Applications/MAMP/htdocs/site/profile-edit.php,這與上面第三行宣告$pattern變數的PHP代碼有關。我已經設法解決了這個問題,將代碼包裹在if(isset($pattern)) if陳述句中,現在已經出現了。我現在沒有收到任何錯誤日志,但檔案沒有從'images-lib'目錄中被洗掉。
一個典型的檔案名例子是 6146972e2dc73_1632016174-500.jpeg
下面是一個關于檔案在資料庫中的樣子的例子:
當在<img>標簽中輸出到一個頁面時,檔案名的大小,例如-500部分與src屬性中的一個字串連接起來。
src="<?php echo '/images-lib/' . $db_image_filename . '-500' . '.' . $db_image_ext; ?>"
關于如何從影像目錄中洗掉特定于某個用戶的影像的任何幫助或協助將是非常好的。
uj5u.com熱心網友回復:
沒有必要將檔案名和擴展名存盤在單獨的陣列中,甚至根本不需要存盤在一個陣列中。只需在一個回圈中獲取每個影像檔案名和擴展名,將其組合成一個模式(例如:images/6146972e2dc73_1632016174-{500,750,1000,1500}.jpeg,然后glob()該模式找到每個匹配檔案并解除鏈接:
while ($row = $s-> fetch() {
$pattern = $imagesLibrary . $row['filename'] 。'-{500,750,1000,1500}. ' . $row['file_extension'] 。
foreach (glob($pattern, GLOB_BRACE) as $filename) {
unlink($filename)。
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/332760.html
標籤:
