2014-10-16 103 views
0

我在與文件上傳設置我的PHP腳本的麻煩。上傳文件使用PHP和HTML

在上傳自己,我把它引向我想要的路徑,但我不知道如果我有腳本的其餘部分語法正確。

編輯:我解決了我的情況,文件沒有正確上傳。我已經編輯了我目前工作的代碼塊。如果需要,請參閱預編輯版本以查看更改:)。

乾杯。

$tardir= "C:/xampp/htdocs/uploaddir/$targetname"; 
$uploadOk=1; 

if(isset($_FILES["uploadFile"])){ 
    $tardir= $tardir . "/" . basename($_FILES["uploadFile"]["name"]); 
    if(move_uploaded_file($_FILES["uploadFile"]["tmp_name"], $tardir)){ 
     echo "The file: ". basename($_FILES["uploadFile"]["name"]). " has been uploaded."; 
} else { 
    echo "Sorry, there was an error uploading your file."; 
} 

$targetname被設置爲無論用戶在該領域輸入什麼。在這種情況下,我把它作爲他們的電子郵件。

$targetname = filter_input(INPUT_POST, 'email'); 

這是<html>的文件上傳的樣子:

<form action= "userlogin.php" method= "post" enctype= "multipart/form-data"> 
     <p><strong>Please choose a file to upload: <input type="file" name="uploadFile"><br></p> 
      <input type="submit" value="Upload File"> 
+0

差錯,哪個變量是拋出一個未定義的索引錯誤? – 2014-10-16 23:20:32

+0

uploadFile拋出錯誤兩次。 @ColinSchoen – ALMorrow 2014-10-16 23:22:35

+0

小心...你讓人們上傳任何他們想做的服務器,和你保持它在文檔根。有人可以上傳惡意腳本並輕鬆執行它們。 – Brad 2014-10-16 23:22:50

回答

1

很難猜出所有你的代碼,因爲它似乎你只能有一個片段在這裏,但我要走了。瘋狂的猜測。如果目標名稱來自您所說的文本輸入,並且您已將其設置爲電子郵件,您是否在此留下斜線?

$tardir= "C:/xampp/htdocs/uploaddir/$targetname"; 

這將是這樣的:

C:/xampp/htdocs/uploaddir/[email protected] 

這將運行:

$tardir= $tardir . basename($_FILES["uploadFile"]["name"]); 

則:

C:/xampp/htdocs/uploaddir/[email protected] 

應該不會是:

C:/xampp/htdocs/uploaddir/[email protected]/filename 

你也可以註釋掉所有在這裏的代碼和的var_dump()文件陣列,並且呼應了你的路,你試試用它們來看看有什麼數據在每個容器舉行之前。如果我得到一個錯誤這樣我轉儲一切,呼應每個字符串,直到找到爲止..