在上传用PHP文件上传图像问题(problem with uploading the images

2019-09-29 02:09发布

嗨,大家好我上传使用@PhP文件上传方法@图像。如果我同时上传10张图像(每幅图像文件是三千分之二千尺寸)。 然后单击保存功能无法正常工作。 如果我上传5张图片或少于五个图像那么它的做工精细WATS错了我的编码,我只是包括我这个职位的PHP代码<input value="Save" type="submit" name="SubSave" id="SubSave" onClick="return changes();">

 if($_POST['SubSave'] == "Save"){
    $aid = $_GET['rid'];
 $updcount = $_POST['theValue'];


if($_SESSION["almgtype"]==1 || (GetUserNoPhoto($_SESSION["almgid"]))>(GetTotalPhotoCount1($_SESSION["almgid"],$aid))) {


  $uid = $_SESSION["almgid"];

 for($k=1;$k<=$updcount;$k++) { 
        //echo $k;
   echo $_FILES["uploadfile"]["type"];

if($_FILES["uploadfile".$k]["name"]!="") {

if(($_FILES["uploadfile".$k]["type"] == "image/gif") || ($_FILES["uploadfile".$k]["type"] == "image/jpeg")|| ($_FILES["uploadfile".$k]["type"] == "image/pjpeg") || ($_FILES["uploadfile".$k]["type"] == "image/png")) {

 if ($_FILES["uploadfile".$k]["error"] > 0)
  {
  echo "Error: " . $_FILES["uploadfile".$k]["error"] . "<br />";
  }
else
  {  
       move_uploaded_file($_FILES["uploadfile".$k]["tmp_name"],
      "photoalbum/" . $_FILES["uploadfile".$k]["name"]);
      $uploadfile =  "photoalbum/" . $_FILES["uploadfile".$k]["name"];
  } 
  $path  = $uploadfile;
  $checklist = "select * from amt_photos1 where aid = '".trim($aid)."' and uid = '".trim($uid)."' and path = '".trim($path)."'";
  $chkresult  = mysql_query($checklist);
  if(mysql_num_rows($chkresult) == 0) {
  $i = 0;
  $path =$uploadfile;
  $result = "insert into amt_photos1 set uid = '".trim($uid)."',
                                     aid = '".trim($aid)."',
                                     path = '".trim($path)."',
                                     status = '0',
                                     createdby = '".$_SESSION["almgid"]."',
                                     createddate = now()";

  $rowlist = mysql_query($result) or die("Error:(".mysql_error().")".mysql_error());


                } 
                /**********************  if file already exist means ******************************************/
                else {
                $err= "The Uploaded file name ".$path." Is already exisit in the Album. Rename It or try to add Any other Photos";

                    }
                /**********************  if file already exist means ******************************************/
                $path ="";
                $uploadfile = "";
                $i  = "";
                }  // file extention
                     else {
        $err= "Unable To Upload The File Please Check The File Extention.Try Again Later";
     }

                }
                }
                }



                } // if save close

Answer 1:

你可能需要改变最大POST大小在php.ini配置文件( post_max_size设置)。



Answer 2:

您可以使用命令phpinfo()来转储配置。 可能的是,正如其他人说你需要增加上载大小和执行时间。

这些可以通过修改.htaccess文件 。

php_value upload_max_filesize 20M
php_value post_max_size 20M
php_value max_execution_time 200
php_value max_input_time 200


Answer 3:

正如一个警告:您的上传处理脚本将使它完全琐碎,完全颠覆你的服务器:

  1. 你一味地相信, $_FILES[...]['type']值是否设置正确-这个值是完全在用户的控制之下,他们可以东西,在“图像/ JPEG”,并上传他们想要的任何类型的文件
  2. 你一味地相信, $_FILES[...]['filename']值是否设置正确-再次,这个值是完全在用户的控制之下,他们可以东西,在“hackme.php”如果他们想
  3. 你盲目地将文件写入到你的画册目录,但不检查用户提供的文件名包含寻路数据

所以,如果有人上传以下文件时会发生什么:

$_FILES['uploadfile0']['type'] = 'image/gif';
$_FILES['uploadfile0']['filename'] = '../pwn_me.php';

现在,您已经愉快地把用户提供的PHP脚本到你的网络服务器和他们现在可以做他们想做的任何事情。

最重要的是,你的数据库查询盲目插入相同的数据到查询,让你大开SQL注入攻击。 同样,你不检查文件名冲突后,才你移动的文件。 因此,有人可以上传恶意脚本,但仅限于特定的文件名做一次。 恭喜你,你已经实现了你的服务器版本的攻击。 你必须 “pwn_me.php”, “pwn_me2.php”, “pwn_me3.php”, “my_little_pwnme.php”,等等。



文章来源: problem with uploading the images with php file upload