2017-09-02 70 views
0

我正在寫一個簡單的rename窗體,重命名文件夾名稱。它工作正常,但如果該文件不存在PHP給我一個錯誤。添加其他要重命名()函數

<form> 
    <input type="text" value="folder name you want to rename"> 
    <input type="submit"> 
</form> 

,這是我的PHP代碼:

<?php 
session_start(); 
$_SESSION['name'] = $_POST['name']; 

rename("../folders/".$_POST['name']."","../renamed/new-name"); 
?> 

代碼工作完美,但我想,因爲當我運行的是不存在的文件夾中的腳本來添加一個if/else語句,我得到這個錯誤。

不存在

我想刪除的錯誤,並簡單地輸出「不存在」。

+0

嘗試根據[此帖](https://stackoverflow.com/a/13045314/7735285),'if(isset($ _ POST [「name」])&&!empty($ _ POST [「name 「])){...' – wpcoder

+0

@wpcoder沒有與我一起檢查答案,你會知道我的意思..謝謝你嘗試順便<3 –

+0

我的評論並不意味着解決方案,它的唯一提示相應地修改你的代碼。 @Rajdeeb只是用不同的算法回答了相同的問題。其全部關於'if else'聲明。 – wpcoder

回答

1

因爲它返回一個布爾值(truefalse)的值,所以您可以隨時使用簡單的if語句來檢查rename()的工作情況。閱讀更多關於PHP manual

所以,你可以沿着這些路線寫的東西:

if(rename("../folders/".$_POST['name']."","../renamed/new-name")) 
{ 
    echo "Folder renamed"; 
    // more code... 
} 
else 
{ 
    echo "Folder does not exist."; 
    // more code... 
} 
+0

謝謝你的幫助<3 –

+0

沒問題...讓我知道你是否需要任何幫助! – Samuel

2

不知道你是能夠發送表單數據沒有任何name屬性或如何你能夠使用$_POST時,有獲取數據沒有method屬性包含在您的表單中。默認情況下,它會使用GET方法發送表單數據。我相信你正在照顧所有這些事情。

現在話說回來,首先檢查是否特定目錄的存在與否,然後相應地將其重命名或只是打印出消息目錄不存在如果目錄用戶試圖重命名不存在。

if(file_exists("../folders/".$_POST['name'])){ 
    rename("../folders/".$_POST['name'],"../renamed/new-name"); 
}else{ 
    echo "directory doesn't exist"; 
} 

這裏的參考:http://php.net/manual/en/function.file-exists.php

file_exists - 檢查文件或目錄是否存在

+0

很好的答案,謝謝 –

0
if (isset($_POST["name"]) && !empty($_POST["name"]) && file_exists("../folders/".$_POST['name'])) { 
$_SESSION['name'] = $_POST['name']; 
rename("../folders/".$_POST['name']."","../renamed/new-name") 
} 
else 
{ 
echo "Folder does not exist."; 
//ToDo 
} 

又一個不同的簡單算法。

如果你需要使rename()功能更復雜,我更喜歡這種算法。它同時驗證表單文本框。

例如,如果您希望在服務器端生成新名稱,我會選擇此解決方案。