[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Загрузка аватара на сервер.
Kumirska
Привет Всем!
Наконец дошёл до темы загрузки аватара на сервер. Почитал информацию в нэте,нашел много
разных вариантов готовых кодов связанных с ресайзом авы и всяческими проверками
разрешения и содержания файла. Но не люблю использовать код,который плохо понимаю!
Прошу вас направить в нужном направлении по возможности
Вот что имеется:
upload.php

<form name="upload" action="upload_s.php" method="POST" ENCTYPE="multipart/form-data">
Выберите фото: <input type="file" name="userfile">
<
input type="submit" name="upload" value="upload">
</
form>



upload_s.php

<?php

<?php

$imageinfo = getimagesize($_FILES['userfile']['tmp_name']);
if($imageinfo['mime'] != 'image/gif' && $imageinfo['mime'] != 'image/jpeg') {
echo "Извините, формат загрузки фото - GIF,JPG.\n";
exit;
}

$uploaddir = 'uploads/';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);

if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
echo "Файл удачно загружен.\n";
} else {
echo "Загрузка не прошла.\n";
}
?>


Я Плнирую изменять ее до 100*100 пикселей,и конечно защитить сам процесс
картинка загружается в папку которую я указал,что посоветуете теперь?

Отредактировал: принцип хранения- пути к фотографиям будут хранится в базе



Спустя 1 час, 2 минуты, 15 секунд (20.06.2011 - 11:40) Kumirska написал(а):
Где же вы Лююююди!

Спустя 5 минут, 57 секунд (20.06.2011 - 11:46) linker написал(а):
Теперь берёшь GD и ресайзишь до нужных размеров, по необходимости.

Спустя 19 минут, 23 секунды (20.06.2011 - 12:05) Kumirska написал(а):
linker а в плане расширения и типа загружаемого файла, то что имется в коде разве достаточно? чтоб не могли навредить

Спустя 32 минуты, 55 секунд (20.06.2011 - 12:38) linker написал(а):
На сколько я смог понять читая статьи на эту тему 100% защиты нет.

Спустя 50 минут, 45 секунд (20.06.2011 - 13:29) Kumirska написал(а):
Я тут разбирался в одном кусочке, у меня копируется файл в нужную мне папку, проверял
переменную $avatar выводом на экран,выводит uploads/1308572911.jpg, странно откуда эти
цифры если я прописывал как $avatar = $uploaddir.$date.".jpg"; Время и дата на компе
правильные. Еще результат не вписывается в базу данных, и фотка которая копирует в
нужную мне директорию не переименовывается

<?php
include './mark/blocks/db.php';

if (empty($_POST['fupload']))
{
exit("Ошибка! Вы не выбрали фото.");
}

$imageinfo = getimagesize($_FILES['userfile']['tmp_name']);
if($imageinfo['mime'] != 'image/gif' && $imageinfo['mime'] != 'image/jpeg') {
echo "Извините, формат загрузки фото - GIF,JPG.\n";
exit;
}
$nazvanie = $_FILES['userfile']['name'];
$uploaddir = 'uploads/';
$uploadfile = $uploaddir . $nazvanie;

move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile);
$date=time();
$avatar = $uploaddir.$date.".jpg";

$result2 = mysql_query ("INSERT INTO works (foto) VALUES('$avatar') WHERE id = '74'");


?>


Спустя 7 минут, 8 секунд (20.06.2011 - 13:36) linker написал(а):
Здесь
move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile);
у тебя $uploadfile равно $uploaddir . $nazvanie, а здесь
$avatar    = $uploaddir.$date.".jpg";
с фига оно такое?

Спустя 6 минут, 56 секунд (20.06.2011 - 13:43) Kumirska написал(а):
linker
Это я накосячил тут с названиями,хотел сделать чтоб было уникальное название,где-то стянул идею.
$avatar = $uploaddir.$nazvanie; исправил, теперь ссылка правильна,только 2 фотки с одинаковым нзванием не закинешь в папку при регистрации.
Но в базу почему-то не добавляется...
 
$result2 = mysql_query ("INSERT INTO works (foto) VALUES('$avatar') WHERE id = `74` ",$db) or die (mysql_error());

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE id = `74`' at line 1

Спустя 6 минут, 9 секунд (20.06.2011 - 13:49) linker написал(а):
$nazvanie = mysql_real_escape_string($_FILES['userfile']['name']) . time();
$uploaddir = 'uploads/';
$uploadfile = $uploaddir . $nazvanie;

if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile))
$result2 = mysql_query ("UPDATE works SET foto = '$uploadfile' WHERE id = '74'");

Спустя 4 минуты, 49 секунд (20.06.2011 - 13:54) linker написал(а):
Или
$nazvanie = time() . rand(0, 100);
$uploaddir = 'uploads/';
$uploadfile = $uploaddir . $nazvanie;

if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile))
$result2 = mysql_query ("UPDATE works SET foto = '$uploadfile' WHERE id = '74'");

Спустя 12 минут, 2 секунды (20.06.2011 - 14:06) Kumirska написал(а):
я поменял

$nazvanie = $_FILES['userfile']['name'] . time();

на


$nazvanie = time().$_FILES['userfile']['name'];


так как он добавлял цифры после расширения.

теперь он переименовал файл поставив перед старым названием еще кучу цифр,только на время это не очень похоже,но главное чтоб не повторялись.
Ура,в базу добавилось! ну теперь можно двигаться дальше! Спасибо linker !

Спустя 1 минута, 56 секунд (20.06.2011 - 14:08) linker написал(а):
Это время, но только в формате UNIX TIMESTAMP.

Спустя 15 минут, 45 секунд (20.06.2011 - 14:24) Kumirska написал(а):
А как проверить что пришла ли вообще фотка с формы или нет,так как
у меня все поля обязательны,в том числе и загрузка фото тоже.
Если я не добавляя обзором фотку нажимаю отправить, и в скрипте стоит
if (!isset($_POST['fupload'])) или if (empty($_POST['fupload'])) поотдельности
то ошибка
Warning: getimagesize() [function.getimagesize]: Filename cannot be empty in C:\apache\localhost
\www\upload_s.php on line 27
Извините, формат загрузки фото - GIF,JPG.



Спустя 14 минут, 22 секунды (20.06.2011 - 14:38) linker написал(а):
Все файлы находятся в массиве $_FILES. Если элемент $_FILES['userfile'] существует и ошибок $_FILES['userfile']['error'] нет, значит что-то пришло.

Спустя 20 минут, 49 секунд (20.06.2011 - 14:59) Kumirska написал(а):
Спасибо linker !!! Выручил!


_____________
никому не дано знать абсолютной истины, ибо понятия, которыми мы оперируем, сами по себе относительны
Быстрый ответ:

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