上传总是提醒文件类型错误

lonechow 发布于 2013/05/22 19:27
阅读 356
收藏 0

<?php require_once('Connections/conn.php');
        $upfile = $_FILES["upfile"];      //获取上传文件的资料
  $type = $upfile["type"];    //获取其中的文件类型 
  $tmp_name = $upfile["tmp_name"];
  $name = $upfile["name"];
  $error = $upfile["error"];
  $size = $upfile["size"];
        $title=$_POST['title'];
     $id=$_POST['id'];
     $time=$_POST['time'];
  $biaoyu=$_POST['biaoyu'];
     $content=$_POST['content'];
     if($type!='image/jpg'||$type!='image/pjpeg'||$type!='image/png'||$type!='image/gif'){
   echo "<script>alert('您上传文件格式不正确!请重新上传');history.go(-1);</script>";exit;}
   if (file_exists($upfile['$name'])) {     //file_exists()检查文件或目录是否存在
  echo "<script>alert('您上传图片名重覆!请重新上传');history.go(-1);</script>";exit;
  }
  if($error=="0"){
           move_uploaded_file($tmp_name,'./news/'.$name);
 $query=("insert into news(title,time,content,photo,username,biaoyu)values('$title','$time','$content','./news/$name','$username','$biaoyu')");
 mysql_query($query);
     echo "<script language=JavaScript>
     parent.location.reload();
     </script> ";
  mysql_close($connection);}

?>

 

我上传一个系统自带的图片提醒图片类型不对  我试过用print_r输出过是这样  Array ( [name] => Lighthouse.jpg [type] => image/pjpeg [tmp_name] => C:\Windows\TEMP\php34FB.tmp [error] => 0 [size] => 561276 ).请问是那里的问题????

加载中
0
南湖船老大
南湖船老大
$upfile = $_FILES["upfile"];

错误,并且文件类型判断的逻辑是错的。

($type!='image/jpg'||$type!='image/pjpeg'||$type!='image/png'||$type!='image/gif'
你用 || 判断,只要有一个条件满足就进去了。假如类型是gif,满足了 $type!='image/jpg',就去了,然后就说类型不对。你应该用in 来判断,或者

 if($type=='image/jpg'||$type=='image/pjpeg'||$type=='image/jpeg'||$type=='image/png'||$type=='image/gif'){
   echo "类型正确";
}else{
  echo "类型不正确"
}

基础是硬伤啊。

lonechow
lonechow
回复 @阿尔法兽 : 谢谢你了..大神 我已经改好了
lonechow
lonechow
回复 @阿尔法兽 : ||就是判断第一个为错,然后他就认为其他的都错.所以就会显示格式不正确吧
南湖船老大
南湖船老大
回复 @lonechow : 还是错的。。看我2L回复你的帖子吧,理解“逻辑短路”这个知识
lonechow
lonechow
回复 @阿尔法兽 : if($type!='image/jpg'||$type!='image/pjpeg'||$type!='image/jpeg'||$type!='image/png'||$type!='image/gif'){ echo "类型不正确"; }else{ if(继续判断下去) 这样可以吗
南湖船老大
南湖船老大
回复 @lonechow : 你还是再好好看看书吧
下一页
0
南湖船老大
南湖船老大

对于这种问题,楼主的理论还待完善啊,只要记住一个专业名词叫 “逻辑短路”。如果上课的时候,你老师没教过,就是你老师水平有问题,连谭浩强这种错误百出误人子弟的人都对这个问题讲的清清楚楚。
参考:http://supportopensource.iteye.com/blog/759591
从此后,你这辈子都不会犯这种错误了。

返回顶部
顶部