1

大家好,我正在使用@PhP 文件上传方法上传图片@如果我一次上传 10 张图片(每张图片为 2000 /3000 尺寸)。然后点击保存功能不起作用。如果我上传 5 张图片或少于 5 张图片,那么它的工作正常我的编码有问题 我只是在这篇文章中包含我的 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
4

3 回答 3

2

您可能需要更改 php.ini 配置文件(post_max_size设置)中的最大 POST 大小。

于 2010-11-15T04:23:10.677 回答
0

您可以使用该命令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
于 2010-11-15T04:43:26.807 回答
0

就像警告一样:您的上传处理脚本将使完全颠覆您的服务器变得非常简单:

  1. 您盲目地相信该$_FILES[...]['type']值已正确设置 - 该值完全在用户的控制之下,他们可以填充“image/jpeg”并上传他们想要的任何类型的文件
  2. 你盲目地相信这个$_FILES[...]['filename']值是正确设置的——同样,这个值完全在用户的控制之下,如果他们愿意,他们可以在“hackme.php”中填充
  3. 您盲目地将文件写入相册目录,但不检查用户提供的文件名是否包含路径数据

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

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

您现在已经愉快地将用户提供的 PHP 脚本放到您的 WEBSERVER上,他们现在可以做任何他们想做的事情。

最重要的是,您的数据库查询会盲目地将相同的数据插入到查询中,从而使您容易受到 SQL 注入攻击。同样,在移动文件之前,您不会检查文件名冲突。因此,有人可以上传恶意脚本,但只针对该特定文件名执行一次。恭喜,您已经在服务器上实施了版本化攻击。您将拥有“pwn_me.php”、“pwn_me2.php”、“pwn_me3.php”、“my_little_pwnme.php”等。

于 2010-11-15T17:09:08.917 回答