Domanda

Ciao ragazzi sto caricando le immagini utilizzando il caricamento di file @PhP Metodo @ se carico 10 immagini alla volta (ogni immagine è 2000/3000 dimensione). poi il click sulla funzione di risparmio non funziona. se carico 5 immagini o meno di cinque immagini quindi il suo funzionamento benissimo wats sbagliato con il mio codifica ho appena includo il mio codice php con questo post <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
È stato utile?

Soluzione

È probabilmente bisogno di modificare la dimensione massima POST nel file di configurazione php.ini (impostazione post_max_size).

Altri suggerimenti

È possibile utilizzare il comando phpinfo() per scaricare la configurazione. Probabilmente, come altri hanno detto è necessario aumentare il tempo dimensione del caricamento ed esecuzione.

Si può essere modificato tramite un .htaccess file di .

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

Proprio come un avvertimento: Lo script di upload di movimentazione renderà assolutamente banale per sovvertire completamente il vostro server:

  1. Si fida ciecamente che il valore $_FILES[...]['type'] sia impostata correttamente - questo valore è completamente sotto il controllo dell'utente, e possono roba in "image / jpeg" e caricare qualsiasi tipo di file che vogliono
  2. ciecamente fiducia che il valore $_FILES[...]['filename'] è impostato correttamente - ancora una volta, questo valore è completamente sotto il controllo dell'utente, e possono roba in "hackme.php" se vogliono
  3. ciecamente scrivere il file nella directory fotoalbum, ma non controlla se il nome del file fornito dall'utente contiene pathing dati

Allora, che cosa succede se qualcuno carica il seguente file:

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

questo punto le felicemente messo uno script PHP fornita dall'utente sul vostro server web e che ora possono fare quello che vogliono.

Oltre a questo, le query di database inserire ciecamente gli stessi dati nelle query, lasciando aperto agli attacchi SQL injection. Come pure, non controlli per le collisioni nomi di file solo dopo aver spostato il file. Quindi, qualcuno potrebbe caricare uno script dannoso, ma solo farlo una volta per quel particolare nome del file. Complimenti, hai implementato gli attacchi di versione sul server. Avrai "pwn_me.php", "pwn_me2.php", "pwn_me3.php", "my_little_pwnme.php", e così via.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top