2013-09-24 36 views
1

我一直在嘗試上傳一個文件move_uploaded_file一段時間了,並出於某種原因發生了一些奇怪的事情。這裏是我的代碼,我現在使用:php無法添加rand()move_uploaded_file()

$rand = rand(); 
$_SESSION['rand'] = $rand; 

$uploaddir = "csv/"; 
$uploadfile = $uploaddir . $_SESSION['rand'] . basename($_FILES['file']['name']); 
$_SESSION['filenaam'] = $_SESSION['rand'].$_FILES['file']['name']; 

if(move_uploaded_file($_FILES['file']['tmp_name'], $uploadfile)) 
    { 
     echo "File is valid, and was successfully uploaded.\n"; 
    } 
    else 
    { 
     echo "Upload failed"; 
    } 

當我嘗試上傳此$uploadfile一切順利,我可以在CSV地圖找到它,但有2個問題。第一個是,即使文件上傳,我總是得到else respond(echo "Upload failed outlook";)。第二個是我試圖保存在$_SESSION['filenaam']中的文件的名稱有所不同,由於某些原因rand函數正在被重用,而不是第一個的結果。

有人可以幫我解決這個問題嗎?

+1

每次運行該腳本時,值在$ _SESSION ['rand']中將會改變 – smerlung

回答

0

要解決,你可以做的是,第二個問題:

比PHP5.2減:

if(!isset($_SESSION['rand'])) { 
    rand(); 
} 

超過PHP5.3

$_SESSION['rand'] = ($_SESSION['rand']) ?: rand() ; 
+0

這個是如何工作的?導致即時通訊嘗試編輯它,因爲它給了我一個錯誤?: – user1456158

+0

你使用哪個php版本? – Mauro

+0

PHP版本5.2.17,解析錯誤:語法錯誤,意外的':'是我在使用您的代碼時得到的代碼 – user1456158

1

它可能會更好地做到這一點,而不是隨機使用uniqid();相反,每次調用rand()函數時都會生成一個不同的值。

+1

與你每次生成另一個值的uniqid()。 – Mauro

+0

是啊不解決問題,但確實有用 – user1456158

+0

是這樣嗎?但似乎每次都沒有改變......至少對我而言。如果它不起作用,我會在下面爲你解釋這個傢伙的解決方案:) – user2587774