|
|
|
| Хочу сделать чтобы больше заданного значения фотки в галерею незагружались и выдавалась ошибка что размер изображения несоответствует.
вот как я делаю:
<?php
// максимально допустимая ширина загружаемой фотографии
$MAX_IMAGES_WIDTH = 600;
// максимально допустимая высота загружаемой фотографии
$MAX_IMAGES_HEIGHT = 1024;
$foto = $_FILES["photo"]["tmp_name"];
$size = getimagesize($foto);
if (($size) & & ($size[0] < $MAX_IMAGES_WIDTH) & & ($size[1] < $MAX_IMAGES_HEIGHT))
{
my_exit("изображение недопустимо");
}
if (!copy($_FILES["photo"]["tmp_name"], "files/" . $file_name))
{
my_exit("Произошла ошибка при загрузке файла!");
}
?>
|
пустая страница получается...
подскажите что я делаю нетак ? | |
|
|
|
|
|
|
|
для: t3ma
(09.12.2008 в 18:02)
| |
<?php
error_reporting(E_ALL);
ini_set('display_errors', 'on');
// максимально допустимая ширина загружаемой фотографии
$MAX_IMAGES_WIDTH = 600;
// максимально допустимая высота загружаемой фотографии
$MAX_IMAGES_HEIGHT = 1024;
$foto = $_FILES["photo"]["tmp_name"];
$foto_ = $foto;
$fotoo = $foto_;
$f0t0 = $fotoo;
$ph0t0 = $f0t0;
$ph0t00 = $ph0t0;
$ph0t000 = $ph0t00;
$size = getimagesize($ph0t000);
if (($size) && ($size[0] < $MAX_IMAGES_WIDTH) && ($size[1] < $MAX_IMAGES_HEIGHT))
{
if (!copy($_FILES["photo"]["tmp_name"], "files/" . $file_name))
{
my_exit("Произошла ошибка при загрузке файла!");
}
}
else
{
my_exit("Ошибка в размере: {$size[0]}x{$size[1]}");
}
?>
|
| |
|
|
|
|
|
|
|
для: BinLaden
(09.12.2008 в 18:09)
| | Спасибо большое, все работает.
А это обязательно так делать:
<?php
$foto = $_FILES["photo"]["tmp_name"];
$foto_ = $foto;
$fotoo = $foto_;
$f0t0 = $fotoo;
$ph0t0 = $f0t0;
$ph0t00 = $ph0t0;
$ph0t000 = $ph0t00;
$size = getimagesize($ph0t000);
?>
|
или можно так:
<?php
$foto = $_FILES["photo"]["tmp_name"];
$size = getimagesize($foto);
?>
|
| |
|
|
|
|
|
|
|
для: t3ma
(09.12.2008 в 18:24)
| | В моём куске кода смысла столько же, сколько и в Вашем.
Если вот этим:
$foto = $_FILES["photo"]["tmp_name"];
$size = getimagesize($foto);
|
... Вы пытаетесь упростить код, не записывая каждый раз $_FILES["photo"]["tmp_name"], то почему вот тут:
copy($_FILES["photo"]["tmp_name"], "files/" . $file_name)
|
Вы снова пишите $_FILES["photo"]["tmp_name"]?
Очевидно, что всё это введение новых переменных -- дурость.
P.S. Прислушайтесь к sim5 насчёт применения copy() в данном случае. | |
|
|
|
|
|
|
|
для: t3ma
(09.12.2008 в 18:02)
| | Это вы так и пишите & &, или только тут? Вы хоть проверяете, загрузилось ли изображение? И не используйте copy() для загрузки файлов: http://www.php.net/manual/ru/features.file-upload.php. | |
|
|
|
|
|
|
|
для: sim5
(09.12.2008 в 18:13)
| | Ок.
Так лучше сделать ?
<?php
if (!move_uploaded_file($_FILES["photo"]["tmp_name"], "files/" . $file_name))
{
my_exit("Произошла ошибка при загрузке файла!");
}
?>
|
не понимаю как написать: так !move_uploaded_file или так: move_uploaded_file | |
|
|
|
|
|
|
|
для: t3ma
(10.12.2008 в 12:54)
| | Ну если move_uploaded_file() взвращает false в случае неудачи, то как надо писать? А вообще же, прежде чем перемещать файл, нужно удостовериться загружен ли он вообще, так как вы еще хотите узнать разрешение его. А для этого можно проверить возвращаемый код ошибки, и если ошибки нет, то проверить разрешение, и, если оно соответсвует вашим требованиям, вот тогда уже move_uploaded_file(). | |
|
|
|
|
|
|
|
для: sim5
(10.12.2008 в 13:05)
| |
<?php
list($res) = array_reverse(explode('.', $_FILES["photo"]["name"]));
$file_name = date('YmdGis'). "." .$res;
// Проверяем формат загружаемого файла.
if (strpos(strtolower($_FILES["photo"]["type"]), "image") === false)
{
my_exit("Неверный формат загружаемого файла!");
}
$ext = strtolower(substr($file_name, strrpos($file_name, ".") + 1));
// Проверяем формат загруаемых файлов, если формат файла не gif, jpg, png выдаем ошибку.
if (($ext != "jpg") && ($ext != "png") &&($ext != "gif") && ($ext != "jpeg"))
{
my_exit("Допустимы только следующие форматы файлов: gif, jpg, png!");
}
$size = getimagesize($_FILES["photo"]["tmp_name"]);
if (($size) && ($size[0] < $MAX_IMAGES_WIDTH) && ($size[1] < $MAX_IMAGES_HEIGHT))
{
$errorCode = $_FILES['photo']['error'];
if($errorCode == UPLOAD_ERR_OK)
{
if (!move_uploaded_file($_FILES["photo"]["tmp_name"], "files/" . $file_name))
{
my_exit("Произошла ошибка при загрузке файла!");
}
}
}
else
{
my_exit("размер загружаемого вами изображения равен <b>{$size[0]}*{$size[1]} пикселей</b> и больше допустимого <b>$MAX_IMAGES_WIDTH*$MAX_IMAGES_HEIGHT пикселей</b>, либо меньше положенного ");
}
?>
|
вот так я сделал. думаю правильно, если нет - поправьте меня пожалуйста | |
|
|
|
|
|
|
|
для: t3ma
(10.12.2008 в 13:37)
| |
<?
if (!$_FILES["photo"]["error"]) { //файл загружен, начинаем проверку
$ext = array(1=>"gif","jpg","png");
//вы же обращаетесь к getimagesize() для того чтобы узнать разрешение,
//значит вы одновременно узнаете и тип файла
//зачем вы проверяете тип по расширению???
if (!$size[2] || $size[2] > 3) //ошибка, неверный тип файла
//а добавить расширение к имени:
$file_name .= $ext[$size[2]];
//и отрезать расширение от имени можно гораздо проще
}
|
Вы же сперва пытаетесь проверить файл на ваши ограничения, потом в середине этой проверки проверяте возвращаемую ошибку... Перепишите все и логично. И ошибки лучше (по моему) складывать в одну переменную, которую выводить с возвратом формы пользователю при ошибках. | |
|
|
|