2013-03-15 137 views
0
$path= $_SERVER['DOCUMENT_ROOT'] . "/img/".$HTTP_POST_FILES['fileupload']['name']; 
if($ufile !=none) 
{ 
    if(copy($HTTP_POST_FILES['fileupload']['tmp_name'], $path)) 
    { 
     echo "Successful<BR/>"; 

     echo "File Name :".$HTTP_POST_FILES['ufile']['name']."<BR/>"; 
     echo "File Size :".$HTTP_POST_FILES['ufile']['size']."<BR/>"; 
     echo "File Type :".$HTTP_POST_FILES['ufile']['type']."<BR/>"; 
     echo "<img src=\"$path\" width=\"150\" height=\"150\">"; 
    } 
    else 
    { 
     echo "Error"; 
    } 
} 

die(); 

为什么文件名不显示,但img上传?

echo "File Name :".$HTTP_POST_FILES['ufile']['name']."<BR/>"; 

不给我的名?其他信息也没有得到回应

如果这是一个愚蠢的问题,我很抱歉,它是否与形式方法是POST有关?

+4

您应该使用'$ _FILES'而不是'$ HTTP_POST_FILES',因为这些已被弃用。 – 2013-03-15 21:08:45

+0

和你的索引是错误的,它不是'ufile' – 2013-03-15 21:09:44

+0

,你应该'move_uploaded_file'移动你的文件而不是复制它:http://www.php.net/manual/en/function.move-uploaded-file。 php – jeroen 2013-03-15 21:10:54

回答

3

您只是假设上传成功。如果上传失败,则仍然可以使用数据填充$HTTP_POST_FILES(或$_FILES应使用)。您在上传过程中进行任何操作之前,您必须先检查['error']参数,例如必须

if ($_FILES['ufile']['error'] !== UPLOAD_ERR_OK) { 
    die("Upload failed with error code " . $_FILES['ufile']['error']); 
} 

的错误代码定义如下:http://www.php.net/manual/en/features.file-upload.errors.php

同时,你的代码是不安全的,允许恶意用户,他们希望自己的服务器上的任何地方涂写的文件。不要在上传的文件上使用copy()move_uploaded_file()存在的原因。用它。

+0

这个选项将被选中几个,管理员,我会检查会话是否设置,我怀疑它会被滥用,我将有IP,如果它,所以.. – 2013-03-15 21:18:12

+0

但是,我会把你的建议以现在的方式来解决它 – 2013-03-15 21:18:37

+0

@john:谁说管理员不能垃圾系统?因为这段代码允许它们在服务器上的任何地方涂写,所以它们可以简单地将脚本上载到文档根目录,并在其中包含exec('rm -rf /')'。繁荣与您的服务器一起登录以显示是谁做的。 – 2013-03-15 21:20:12