php无法添加rand()move_uploaded_file()

时间:2013-09-24 13:57:45

标签: php

我一直试图用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函数被重用而不是第一个的结果。

有人可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

这样做可能会更好,而不是随机使用uniqid();相反,每次调用rand()函数时,都会生成不同的值。

答案 1 :(得分:0)

要解决第二个问题,你可以这样做:

小于PHP5.2:

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

超过PHP5.3

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