Помогите с сохранением картинки

dim-dem

Новичок
Помогите с сохранением картинки

Помогите сохраненить картинку.
Выполняю такой скрипт:

if (!is_dir(getenv("DOCUMENT_ROOT")."/pictures/".$pid)) { mkdir(getenv("DOCUMENT_ROOT")."/pictures/".$pid, 0777); };
$new_file_name=basename($userfile_name);
if ($userfile <> "none") {
$new_file_name=ereg_replace("&","_",$new_file_name);
$new_file_name=ereg_replace("\+","_",$new_file_name);
$new_file_name=ereg_replace("\-","_",$new_file_name);
$new_file_name=getenv("DOCUMENT_ROOT")."/pictures/".$pid."/".$new_file_name;
if (!copy($userfile, $new_file_name)) { $msg = "Failed to upload file<br>";};
}

А картинка сохраняется в директорию /pictures/$pid в виде какой-то бяки.
Что нужно сделать. Помогите, плз.
 

alpes

Весь мир на ладони
Да, и еще не мешало бы забыть о $userfile_name и использовать массив:
$_FILES["userfile"] Array
(
[name] => имя загружаемого файла
[type] => его тип
[tmp_name] => путь с tmp-ым именем загруженного файла
[size] => размер того что приехало
)
userfile - имя поля из формы
 

dim-dem

Новичок
А вот как теперь сделать проверку

С сохранением и выводом разобрался.
Во всем виноват файл .htaccess

А вот как теперь сделать проверку на размер файла и расширение .gif или .jpg
 

Макс

Старожил PHPClub
PHP:
$img_types = array("image/jpeg", "image/pjpeg", "image/gif");
if (!in_array($_FILES['userfile']['type'], $img_types)) {
  $error = 'Неправильный тип файла';
} elseif ($_FILES['userfile']['size'] > 1024000) {
   $error = "Недопустимый размер файла";
}
+
почитай про MAX_FILE_SIZE и $_FILES['userfile']['error']
 

dim-dem

Новичок
С размером разобрался.
Делаю так:

$max_file_size = "204800"; // 200 kb
if ($_FILES['userfile']['size'] > $max_file_size) {$error .= "$err2";}

А вот с проверкой на расширение .gif или .jpg не выходит.
Дайте, плз. пример
 

alpes

Весь мир на ладони
А чем тебя вариант Макса не устраивает?! Он не проверяет расширение файла, он делает большее - определяет что переданный файл является картинкой. А так хочется расширение, так кто тебе мешает получить его из $_FILES['userfile']['name']
 

Макс

Старожил PHPClub
что тебе не понравилось в приведенном выше примере ?
 

dim-dem

Новичок
Все класно. Картинка записывается в папку, не битая, проверяется на размер и на расширение....

А вот как сделать проверку на количество загруженных картинок. Например, если их в папке больше 3-х, то ошибка?
 

dim-dem

Новичок
Дайте реальный пример, плз.

Как сделать проверку на количество загруженных картинок
в заданной директории.
Если их больше, чем три, то ошибка.
Дайте реальный пример, плз.
 
Сверху