[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Не загружается аватар на сайт
ДиммКа
Есть код который должен загружать выбранный пользователем аватар на сайт либо выставлять стандартный если пользователь не выбрал аватар! Но почему аватар все равно не заргужается на сайт , используется стандартный! вот коды:

Код формы загрузки аватара:
 <p>
<label>
Выберите аватар. Изображение должно быть формата jpg, gif или png:<br></label>
<input
type="FILE" name="fupload">
</p>

<!-- В переменную fupload отправится изображение, которое выбрал пользователь. -->

Код обработки аватара:
if (!empty($_POST['fupload'])) //проверяем, отправил ли пользователь изображение
{
$fupload=$_POST['fupload']; $fupload = trim($fupload);
if ($fupload =='' or empty($fupload)) {
unset($fupload);// если переменная $fupload пуста, то удаляем ее
}
}


if (!isset($fupload) or empty($fupload) or $fupload =='')
{
//если переменной не существует (пользователь не отправил изображение),то присваиваем ему заранее приготовленную картинку с надписью "нет аватара"
$avatar = "avatars/net-avatara.jpg"; //можете нарисовать net-avatara.jpg или взять в исходниках
}

else
{
//иначе - загружаем изображение пользователя
$path_to_90_directory = 'avatars/';//папка, куда будет загружаться начальная картинка и ее сжатая копия


if(preg_match('/[.](JPG)|(jpg)|(gif)|(GIF)|(png)|(PNG)$/',$_FILES['fupload']['name']))//проверка формата исходного изображения
{

$filename = $_FILES['fupload']['name'];
$source = $_FILES['fupload']['tmp_name'];
$target = $path_to_90_directory . $filename;
move_uploaded_file($source, $target);//загрузка оригинала в папку $path_to_90_directory

if(preg_match('/[.](GIF)|(gif)$/', $filename)) {
$im = imagecreatefromgif($path_to_90_directory.$filename) ; //если оригинал был в формате gif, то создаем изображение в этом же формате. Необходимо для последующего сжатия
}
if(preg_match('/[.](PNG)|(png)$/', $filename)) {
$im = imagecreatefrompng($path_to_90_directory.$filename) ;//если оригинал был в формате png, то создаем изображение в этом же формате. Необходимо для последующего сжатия
}

if(preg_match('/[.](JPG)|(jpg)|(jpeg)|(JPEG)$/', $filename)) {
$im = imagecreatefromjpeg($path_to_90_directory.$filename); //если оригинал был в формате jpg, то создаем изображение в этом же формате. Необходимо для последующего сжатия
}


// Создание квадрата 90x90
// dest - результирующее изображение
// w - ширина изображения
// ratio - коэффициент пропорциональности


$w = 90; // квадратная 90x90. Можно поставить и другой размер.

// создаём исходное изображение на основе
// исходного файла и определяем его размеры

$w_src = imagesx($im); //вычисляем ширину
$h_src = imagesy($im); //вычисляем высоту изображения

// создаём пустую квадратную картинку
// важно именно truecolor!, иначе будем иметь 8-битный результат

$dest = imagecreatetruecolor($w,$w);

// вырезаем квадратную серединку по x, если фото горизонтальное
if ($w_src>$h_src)
imagecopyresampled($dest, $im, 0, 0,
round((max($w_src,$h_src)-min($w_src,$h_src))/2),
0, $w, $w, min($w_src,$h_src), min($w_src,$h_src));

// вырезаем квадратную верхушку по y,
// если фото вертикальное (хотя можно тоже серединку)

if ($w_src<$h_src)
imagecopyresampled($dest, $im, 0, 0, 0, 0, $w, $w,
min($w_src,$h_src), min($w_src,$h_src));

// квадратная картинка масштабируется без вырезок
if ($w_src==$h_src)
imagecopyresampled($dest, $im, 0, 0, 0, 0, $w, $w, $w_src, $w_src);


$date=time(); //вычисляем время в настоящий момент.
imagejpeg($dest, $path_to_90_directory.$date.".jpg");//сохраняем изображение формата jpg в нужную папку, именем будет текущее время. Сделано, чтобы у аватаров не было одинаковых имен.

//почему именно jpg? Он занимает очень мало места + уничтожается анимирование gif изображения, которое отвлекает пользователя. Не очень приятно читать его комментарий, когда краем глаза замечаешь какое-то движение.


$avatar = $path_to_90_directory.$date.".jpg";//заносим в переменную путь до аватара.

$delfull = $path_to_90_directory.$filename;
unlink ($delfull);//удаляем оригинал загруженного изображения, он нам больше не нужен. Задачей было - получить миниатюру.
}
else
{
//в случае несоответствия формата, выдаем соответствующее сообщение
exit ("Аватар должен быть в формате <strong>JPG,GIF или PNG</strong>");
}
//конец процесса загрузки и присвоения переменной $avatar адреса загруженной авы
}

Код вывода аватара на экран пользователя:
Это Вы:<br>
<
img alt='$_SESSION[login]' src='$myrow[avatar]'>

А это запрос SQL к БД :
CREATE TABLE `users` (
`id` int(11) NOT NULL auto_increment,
`login` varchar(15) NOT NULL default '',
`password` varchar(255) NOT NULL default '',
`avatar` varchar(255) NOT NULL default '',
PRIMARY KEY (`id`)
)
TYPE=MyISAM AUTO_INCREMENT=18 ;

где ошибка?



Спустя 2 минуты, 10 секунд (6.07.2010 - 21:09) Slays написал(а):
ДиммКа, сразу бы создал тему "Я ничо не понимаю, сделайте мне сайт"

Спустя 9 минут, 19 секунд (6.07.2010 - 21:18) linker написал(а):
И в первой же строчке ошибка
if (!empty($_POST['fupload'])) {...}
, не $_POST, а $_FILES[]

Спустя 3 минуты, 32 секунды (6.07.2010 - 21:22) inpost написал(а):
Да что вы понимаете! Это ведь уроки Попова по добавлению Аватара =)
П.С. просто скопируй скрипт как он есть и все будет работать! Сделай доступ 777 к папке с загрузкой аватаров.

Спустя 15 минут, 55 секунд (6.07.2010 - 21:37) sergeiss написал(а):
Я проникся уже самым началом кода...

if (!empty($_POST['fupload'])) //проверяем, отправил ли пользователь изображение
{
$fupload=$_POST['fupload']; $fupload = trim($fupload);
if ($fupload =='' or empty($fupload)) {
unset($fupload);// если переменная $fupload пуста, то удаляем ее
}
}


if (!isset($fupload) or empty($fupload) or $fupload =='')
{
//если переменной не существует (пользователь не отправил изображение),то присваиваем ему заранее приготовленную картинку с надписью "нет аватара"
$avatar = "avatars/net-avatara.jpg"; //можете нарисовать net-avatara.jpg или взять в исходниках
}

Даже если "забыть" о том, что файл надо искать в другом глобальном массиве, и предположить что в ПОСТе может быть 'fupload'... То всё равно сильно написано, просто сильно! laugh.gif laugh.gif laugh.gif
Столько букоФФ вместо одного небольшого сравнения....

PS. Рекомендую автору вопроса забыть про этот скрипт и написать самому "с нуля". Это будет проще и надёжнее.

Спустя 8 минут, 5 секунд (6.07.2010 - 21:46) Slays написал(а):
по-моему автору что echo, что else, разницы никакой. Постоянно кидает выдранные отовсюду куски без малейшего представления что там для чего с единственным вопросом "почему не работает, где ошибка".
Замени POST на FILE, ок, всеравно не работает, где ошибка. Ну как бы так дела не делаются...
Быстрый ответ:

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