Frage

Hallo Jungs, ich bin das Hochladen der Bilder, um die @PhP Datei-Upload-Methode mit @ Wenn ich 10 Bilder auf einmal laden (jeweils Bilder sind 2000/3000 Dimension). dann die auf Klick Sparfunktion funktioniert nicht. wenn ich 5 Bilder hochladen oder weniger als fünf Bilder dann sein adaequat wats falsch mit meiner Codierung ich meinen PHP-Code nur mit diesem Beitrag enthalten <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
War es hilfreich?

Lösung

Sie müssen wahrscheinlich die maximale POST Größe in der php.ini-Konfigurationsdatei (post_max_size Einstellung) ändern.

Andere Tipps

Sie können den Befehl phpinfo() verwenden, um Ihre Konfiguration Dump. Wahrscheinlich, wie andere gesagt haben, Sie müssen die Upload-Größe und die Ausführungszeit zu erhöhen.

Diese kann geändert werden durch eine .htaccess-Datei .

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

Nur als Warnung: Die Upload Umgang Skript wird es trivial macht ganz vollständig den Server zu unterminieren:

  1. Sie vertrauen blind, dass der $_FILES[...]['type'] Wert richtig eingestellt ist - dieser Wert ist vollständig unter der Kontrolle des Benutzers, und sie können in „image / jpeg“ stopfen und laden jede Art von Datei, die sie wollen
  2. Sie blind vertrauen, dass der $_FILES[...]['filename'] Wert richtig eingestellt ist - wieder, dieser Wert ist vollständig unter der Kontrolle des Benutzers, und sie können in „hackme.php“ stopfen, wenn sie wollen
  3. Sie blind die Datei auf Ihr Fotoalbum-Verzeichnis schreiben, aber nicht überprüfen, ob die vom Benutzer angegebenen Dateinamen enthalten Daten Pathing

Also, was passiert, wenn jemand die folgende Datei uploads:

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

Sie haben glücklich jetzt legen einen vom Benutzer bereitgestellte PHP-Skript auf Ihrem Webserver und sie jetzt tun können, was sie wollen.

Hinzu kommt, dass, Ihre Datenbankabfragen blind die gleichen Daten in die Abfragen einzufügen, so dass Sie weit offen für SQL-Injection-Angriffe. Wie gut, überprüfen Sie nicht für Dateinamen Kollisionen erst, nachdem Sie die Datei verschoben haben. So könnte jemand ein schädliches Skript laden, aber es nur einmal tut für diese bestimmte Dateinamen. Herzlichen Glückwunsch, Sie haben versioniert Angriffe auf Ihrem Server implementiert. Sie müssen "pwn_me.php", "pwn_me2.php", "pwn_me3.php", "my_little_pwnme.php", und so weiter.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top