[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Загрузка фото
Клава
Здравствуйте, есть код, картинка нужного размера сохраняется, все выводится, но не могу сообразить, как сделать необязательным условием загрузку фото. На данный момент если в форме не выбрать файл, то выдает ошибку :
"Warning: getimagesize() [function.getimagesize]: Filename cannot be empty in W:\home\localhost\www\cat.loc\next_kupi.php on line 21"
Пыталась сделать обработку если файл существует через
"if(
isset($_POST['upload'])"
и дальше уменьшать, но это не прокатило.
Спасибо заранее, если кто-то поможет.

<?php
$time=date("Y:m:d");
$uploaddir = 'uploads/';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
// Проверяем, была ли корректным образом отправлена форма
if(
isset($_POST['name']) && !empty($_POST['name']) &&
isset($_POST['page']) && !empty($_POST['page']) &&
isset($_POST['time']) && !empty($_POST['time']) &&
isset($_POST['text']) && !empty($_POST['text'])
)
{
// Обрабатываем данные
$name = stripslashes(trim(htmlspecialchars($_POST['name'],ENT_QUOTES)));
$page = stripslashes(trim(htmlspecialchars($_POST['page'],ENT_QUOTES)));
$time = stripslashes(trim(htmlspecialchars($_POST['time'],ENT_QUOTES)));
$text = stripslashes(trim(htmlspecialchars($_POST['text'],ENT_QUOTES)));
if($_FILES["userfile"]["size"] > 1024*2*1024) {

exit ("<p> Размер файла больше 2МБ </p>");
}
$params = getimagesize($_FILES['userfile']['tmp_name']);
if($params['mime'] != 'image/gif' &&
$params['mime'] != 'image/jpeg' &&
$params['mime'] != 'image/png') {

exit ("<p> Не тот формат файла </p>");
}
switch ( $params[2] ) {
case 1: $source = imagecreatefromgif($_FILES['userfile']['tmp_name']); break;
case 2: $source = imagecreatefromjpeg($_FILES['userfile']['tmp_name']); break;
case 3: $source = imagecreatefrompng($_FILES['userfile']['tmp_name']); break;
}
// максимально допустимый размер
// (по ширине/высоте) уменьшенной картинки

$max_size = 250;
if ( $params[0]>$max_size || $params[1]>$max_size ) {
if ( $params[0]>$params[1] ) $size = $params[0]; # ширина
else $size = $params[1]; # высота
$resource_width = floor($params[0] * $max_size / $size);
$resource_height = floor($params[1] * $max_size / $size);
$resource = imagecreatetruecolor($resource_width, $resource_height);

imagecopyresampled($resource, $source, 0, 0, 0, 0,
$resource_width, $resource_height, $params[0], $params[1]);
}

else $resource = $source;
// сохраняем уменьшенную картинку
imagePng($resource, $uploadfile);
imagedestroy($resource);
imagedestroy($source);

$sql = "
INSERT INTO
ads_next (name, text, userfile, page, date)
VALUES
('
$name','$text', '$uploadfile','$page','$time')
"
;
mysql_query($sql);
// Перезапрашиваем страницу
header('Location: ' . $_SERVER['PHP_SELF']. '?id=' . $id);
exit;
}
?>




Спустя 14 минут, 43 секунды (9.11.2011 - 16:06) sergeiss написал(а):
Во-первых, вот это излишне:
Цитата (Клава @ 9.11.2011 - 16:51)
isset($_POST['name']) && !empty($_POST['name']) &&
isset($_POST['page']) && !empty($_POST['page']) &&
isset($_POST['time']) && !empty($_POST['time']) &&
isset($_POST['text']) && !empty($_POST['text'])

тут достаточно оставить только часть с !empty(). Потому что если не было передано такого параметра, то empty просто вернет false, а !empty() - true.

А во-вторых... Выведи $_FILES['userfile']['tmp_name'], посмотри, что там содержится. И заодно проверь содержимое $_FILES['userfile']['error'] - вдруг там не ноль содержится?

Плюс к этому... А поле в форме, где вводится имя файла, у тебя точно называется 'userfile'?

Спустя 3 минуты, 31 секунда (9.11.2011 - 16:09) PandoraBox2007 написал(а):
<?php

$time=date("Y:m:d");
$uploaddir = 'uploads/';
$uploadfile = ""; // default empty

// Проверяем, была ли корректным образом отправлена форма

if (
isset($_POST['name']) && !empty($_POST['name']) &&
isset($_POST['page']) && !empty($_POST['page']) &&
isset($_POST['time']) && !empty($_POST['time']) &&
isset($_POST['text']) && !empty($_POST['text'])
)

{
// Обрабатываем данные
$name = stripslashes(trim(htmlspecialchars($_POST['name'],ENT_QUOTES)));
$page = stripslashes(trim(htmlspecialchars($_POST['page'],ENT_QUOTES)));
$time = stripslashes(trim(htmlspecialchars($_POST['time'],ENT_QUOTES)));
$text = stripslashes(trim(htmlspecialchars($_POST['text'],ENT_QUOTES)));

// if no errors, http://www.php.net/manual/en/features.file-upload.errors.php
if ($_FILES['userfile']['error'] == UPLOAD_ERR_OK)
{
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);

// лимит размера
if($_FILES["userfile"]["size"] > 2*1024*1024) {
exit ("<p> Размер файла больше 2МБ </p>");
}

// узнаем инфу о изображении
$params = getimagesize($_FILES['userfile']['tmp_name']);

// Проверка MIME
if ( !in_array(
params['mime'],
array('image/gif', 'image/jpeg', 'image/png')
))

{
exit ("<p> Не тот формат файла </p>");
}

switch ( $params[2] ) {
case 1: $source = imagecreatefromgif($_FILES['userfile']['tmp_name']); break;
case 2: $source = imagecreatefromjpeg($_FILES['userfile']['tmp_name']); break;
case 3: $source = imagecreatefrompng($_FILES['userfile']['tmp_name']); break;
}

// максимально допустимый размер
// (по ширине/высоте) уменьшенной картинки

$max_size = 250;
if ( $params[0]>$max_size || $params[1]>$max_size ) {

if ( $params[0]>$params[1] )
$size = $params[0]; # ширина
else
$size = $params[1]; # высота

$resource_width = floor($params[0] * $max_size / $size);
$resource_height = floor($params[1] * $max_size / $size);
$resource = imagecreatetruecolor($resource_width, $resource_height);

imagecopyresampled($resource, $source, 0, 0, 0, 0,
$resource_width, $resource_height, $params[0], $params[1]);
} else $resource = $source;

// сохраняем уменьшенную картинку
imagePng($resource, $uploadfile);
imagedestroy($resource);
imagedestroy($source);

}

$sql = "
INSERT INTO
ads_next (name, text, userfile, page, date)
VALUES
('
$name','$text', '$uploadfile','$page','$time')
"
;
mysql_query($sql);

// Перезапрашиваем страницу
header('Location: ' . $_SERVER['PHP_SELF']. "?id=$id");
exit;
}

?>

Спустя 1 час, 35 минут, 45 секунд (9.11.2011 - 17:45) Клава написал(а):
PandoraBox2007, большое человеческое спасибо !
И еще есть просьба, если можно, если имеются, дайте пожалуйста нормальных ссылок, где описывается (понятным языком) как сделать постраничный вывод информации. Буду очень благодарна.

Спустя 35 минут, 49 секунд (9.11.2011 - 18:21) m4a1fox написал(а):
Клава
тут

Спустя 50 минут, 10 секунд (9.11.2011 - 19:11) Клава написал(а):
Спасибо, пошла изучать )))
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.