2012-07-23 82 views
0

我有一个图片上传脚本,允许简单的PHP上传个人资料图片。现在意外地失败了上传。我不完全确定为什么。我已经检查了post_max_size和upload_max_size,它们超过1MB。我怀疑这是与/ /删除以前的图片,但不知道为什么。如果你看看它说的查询;图片上传失败意外

AND image1 !='../files/noprofile.jpg' 

这样,如果配置文件图片是默认配置文件,默认图片不会被删除。我有一种感觉,就是用这个部分来做,当图像是默认的个人资料图片时,上传失败。

我知道我应该使用mysqli,但请不要提及我正在处理它。

下面是用取出来简单起见几件事整个脚本:

session_start(); 
$username=$_SESSION['username']; 
$pass = $_SESSION['password']; 
$path = "../imageuploads/"; 

//Delete previous picture 
$pic = mysql_query(" 
SELECT * FROM members WHERE artist='Y' AND username='$username' AND password='$pass' AND image1 !='../files/noprofile.jpg' 
")or die(mysql_error()); 

while($fetchpic = mysql_fetch_array($pic)){ 

//if image1 does not equal no profile 
unlink($fetchpic['image1']); 

} 


$valid_formats = array("jpg", "png", "gif", "bmp", "jpeg"); 
if(isset($_POST) and $_SERVER['REQUEST_METHOD'] == "POST") 
    { 
     $name = $_FILES['photoimg1']['name']; 
     $size = $_FILES['photoimg1']['size']; 

     if(strlen($name)) 
      { 
       list($txt, $ext) = explode(".", $name); 
       if(in_array($ext,$valid_formats)) 
       { 
       if($size<(2024*2024)) 
        { 
         $actual_image_name = time().substr(str_replace(" ", "_", $txt), 5).".".$ext; 
         $tmp = $_FILES['photoimg1']['tmp_name']; 
         if(move_uploaded_file($tmp, $path.$actual_image_name)) 
          { 
          mysql_query("UPDATE members SET image1='../imageuploads/$actual_image_name' WHERE username='$username' AND password ='$pass' AND artist='Y'"); 

           echo "<p1><img src='../imageuploads/".$actual_image_name."' class='imageright1'></p1>"; 
          } 
         else 
          echo "<p1>failed</p1>"; 
        } 
        else 
        echo "<p1>Your image is a bit too big. It has to be below 1MB.</p1>";     
        } 
        else 
        echo "<p1>Only JPG, PNG GIF and BMP file formats are accepted.</p1>"; 
      } 

     else 
      echo "<p1>You've gotta select an image first!</p1>"; 

     exit; 
    } 
+0

列表($ TXT,$ EXT)=爆炸(“。”,'firstname.lastname.jpg');会给出意想不到的结果 – 2012-07-23 18:17:09

+0

你推荐什么? – 2012-07-23 18:30:18

+0

$ explodedName = explode('。',$ name);如果(in_array($ explodedName [count($ explodedName) - 1],$ valid_formats){.... – 2012-07-23 18:42:56

回答

0

在你的表单标签,添加属性ENCTYPE:

<form action="page.php" method="post" enctype="multipart/form-data"> 
+0

这已经完成,而不是问题 – 2012-07-23 17:23:37