Проблема с загрузкой изображений с загрузкой файла PHP
Вопрос
Привет, ребята, я загружаю изображения, используя метод загрузки файла @PHP @ Если я загружаю 10 изображений за раз (каждое изображения составляет 2000/3000 размер). Тогда функция сохранения нажатия не работает. Если я загружаю 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
Решение
Вам, вероятно, нужно изменить максимальный размер поста в вашем файле конфигурации php.ini (post_max_size
параметр).
Другие советы
Вы можете использовать команду 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
Как и предупреждение: ваш скрипт обработки загрузки сделает совершенно тривиальным, чтобы полностью подобрать ваш сервер:
- Вы слепо верите, что
$_FILES[...]['type']
Значение правильно установлено - это значение полностью под управлением пользователя, и они могут внести в «Image/jpeg» и загружать любой тип файла, который они хотят - Вы слепо верите, что
$_FILES[...]['filename']
Значение правильно устанавливается - опять же, это значение полностью под управлением пользователя, и они могут внести в «chackme.php», если они хотят - Вы слепо записываете файл в свой каталог с фотоалзом, но не проверяете, содержит ли имя файла, поставляемое пользователем.
Итак, что произойдет, если кто -то загрузит следующий файл:
$_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" и так далее.