2010-11-15 4 views
1

привет, ребята, я загружаю изображения с помощью загрузки файла @PhP. Метод @ Если я загружаю 10 изображений за раз (каждое изображение имеет размер 2000/3000). то функция сохранения по клику не работает. если я загрузить 5 изображений или меньше пяти изображений, то его работает отлично Wats неправильно с моей кодирования я просто включить мой PHP код с этой должности <input value="Save" type="submit" name="SubSave" id="SubSave" onClick="return changes();">проблема с загрузкой изображений с загрузкой файла php

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 
+0

FYI, ваше нефильтрованное использование $ _GET ['rid'] в качестве переменной $ help в выражении SQL делает ваше приложение уязвимым для атак SQL-инъекций. Вы должны исправить это как можно скорее. – Hamish

ответ

2

Вы, вероятно, нужно изменить максимальный размер POST в вашем php.ini файл конфигурации (post_max_size настройка).

+0

Также вы можете увеличить свой «max_execution_time». –

+0

И убедитесь, что у вас нет никаких директив Apache, ограничивающих размер сообщения. Чтение журналов ошибок, вероятно, поможет. –

+0

Извините, что я новичок в этом, где я включаю, что max_size есть какая-либо другая ссылка, пожалуйста, предложите мне – Meena

0

Вы можете использовать команду phpinfo(), чтобы сбросить конфигурацию. Вероятно, как утверждают другие, вам необходимо увеличить размер загрузки и время выполнения.

Их можно изменить с помощью .htaccess file.

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

Подобно тому, как предупреждение: Загруженные обработки скрипт сделает его совершенно тривиальным полностью подорвать ваш сервер:

  1. Вы слепо верить, что значение $_FILES[...]['type'] правильно установлены - это значение полностью под пользовательский контроль, и они могут загрузиться в «image/jpeg» и загрузить файлы любого типа, которые они хотят
  2. Вы слепо верьте, что значение $_FILES[...]['filename'] правильно установлено - опять же, это значение полностью находится под контролем пользователя, и они могут набивать в "hackme.php", если они хотят
  3. Вы слепо записать файл в свой каталог фотоальбома, но не проверить, если пользователь поставляемого имя файл содержит Pathing данные

Итак, что произойдет, если кто-то загружает файл:

$_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» и т. Д.

Смежные вопросы