Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
Страницы: (3) [1] 2 3  ( Перейти к первому непрочитанному сообщению )  
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> UploadFiles на сервер, Изображения
Stave  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Местный житель
****

Профиль
Группа: Пользователь
Сообщений: 189
Пользователь №: 40254
На форуме: 2 года, 6 месяцев, 19 дней
Карма: 4




Вечер добрый, поставил перед собой задачу написание загрузки личных фото/аватарок пользователем.

Рылся в интернете, находил много примеров, от самого простого:

<html>
<head>
<title>
Загрузка файлов на сервер</title>
</head>
<body>
<h2><p><b>
Форма для загрузки файлов </b></p></h2>
<form
action="upload.php" method="post" enctype="multipart/form-data">
<input
type="file" name="filename"><br>
<input
type="submit" value="Загрузить"><br>
</form>
</body>
</html>



<?php
if($_FILES["filename"]["size"] > 1024*3*1024)
{
echo ("Размер файла превышает три мегабайта");
exit;
}
if(is_uploaded_file($_FILES["filename"]["tmp_name"]))
{
move_uploaded_file($_FILES["filename"]["tmp_name"], "/path/to/file/".$_FILES["filename"]["name"]);
} else {
echo("Ошибка загрузки файла");
}
?>



до среднего уровня безопасности:

if($_FILES['upload_cover']['size'] != 0 and $_FILES['upload_cover']['size'] <= 512000){
}
else{
$er[] = 'Файл не может быть пустым или превышать размер 512KB';
}

if($_FILES['upload_cover']['type'] == 'image/jpeg' || $_FILES['upload_cover']['type'] == 'image/png') {
}
else{
$er[] = 'Недопустимый формат файла, только - jpeg/jpg и png';
}

if(count($er)){
echo implode('<br>',$er);
}




но все же это не предел...
Читал тему: http://phpforum.su/index.php?showtopic=0&v...dpost&p=3081759

А еще нашел вот что: https://habrahabr.ru/post/44610/

Что вы об этом методе думаете? и как можно проверить скрипт с проверкой:


$imageinfo = getimagesize($_FILES['upload_cover']['tmp_name']);
if($imageinfo['mime'] != 'image/gif' && $imageinfo['mime'] != 'image/jpeg') {
echo "Sorry, we only accept GIF and JPEG images\n";
exit;
}





--------------------
Если долго в одних стенах живешь, ты с ними сростаешься
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Миша  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 2611
Пользователь №: 37963
На форуме: 3 года, 7 месяцев, 14 дней
Карма: 28




По моему хорошо написано:

Цитата (AllesKlar)
В изображение спокойно встраивается php код, который будет выполнен на сервере.

При загрузке изображения ты должен:
1. определить его тип. //(exif_imagetype()
2. открыть изображение // imagecreatefrom...()
3. создать средствами php пустое изображение
4. скопировать в новое изображение все из исходного
5. сохранить новое изображение
6. удалить исходное

В пункте 4 из исходного изображения возьмется только графика, а весь мусор будет проигнорирован, таким образом ты получишь чистую картинку без примесей.


От себя только добавлю, что нужно проверить размер допустимого изображения, типы файлов которые поддерживаются и изменить имена файлов при сохранении.


--------------------
Болтовня ничего не стоит. Покажите мне код.
PMПисьмо на e-mail пользователю
    1   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Stave  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Местный житель
****

Профиль
Группа: Пользователь
Сообщений: 189
Пользователь №: 40254
На форуме: 2 года, 6 месяцев, 19 дней
Карма: 4




Цитата (Медведь @ 18.09.2016 - 09:46)
По моему хорошо написано:

Цитата (AllesKlar)
В изображение спокойно встраивается php код, который будет выполнен на сервере.

При загрузке изображения ты должен:
1. определить его тип. //(exif_imagetype()
2. открыть изображение // imagecreatefrom...()
3. создать средствами php пустое изображение
4. скопировать в новое изображение все из исходного
5. сохранить новое изображение
6. удалить исходное

В пункте 4 из исходного изображения возьмется только графика, а весь мусор будет проигнорирован, таким образом ты получишь чистую картинку без примесей.


От себя только добавлю, что нужно проверить размер допустимого изображения, типы файлов которые поддерживаются и изменить имена файлов при сохранении.

Я пока что пришел к такому варианту:
Даже по видеоурокам кодеры не заморачиваются методом создания и выдергивания из изображения исходного кода.



if(isset($_POST["edit_avatar"])){

if($_FILES['upload_cover']['type'] == 'image/jpeg' || $_FILES['upload_cover']['type'] == 'image/png') {
}
else{
$er[] = 'Недопустимый формат файла, только - jpg и png';
}

if($_FILES['upload_cover']['size'] != 0 and $_FILES['upload_cover']['size'] <= 100000){

}
else{
$er[] = 'Файл не может быть пустым или превышать размер 100Kb';
}

if(count($er)){
echo implode('<br /><span style="color:red;"><i class="fa fa-exclamation"></i> </span>',$er);
exit();
}else{

$name_dir = $_SESSION['auth_userid'];
$dir = "/content/images/usersava/".$name_dir;
$uploaddir = $_SERVER['DOCUMENT_ROOT'].$dir;

if (!file_exists($uploaddir)){
mkdir($uploaddir, 0755, true);
}

if($_FILES['upload_cover']['type'] == 'image/jpeg'){
$save_file = $uploaddir."/".$_FILES['upload_cover']['name'].".jpg";
}elseif($_FILES['upload_cover']['type'] == 'image/png'){
$save_file = $uploaddir."/".$_FILES['upload_cover']['name'].".png";
}

if(is_uploaded_file($_FILES['upload_cover']['tmp_name'])){

if(! move_uploaded_file($_FILES['upload_cover']['tmp_name'], $save_file)){
echo 'Невозможно переместить файл в папку назначения!';
exit();
}

}
else{
echo 'Ошибка при попытке загрузить недопустимый файл!';
exit();
}
}
}



Кстати, а разве если взять из изображения исходную инфу, разве с ней не переместиться то, что вшито в якобыкартинку?




--------------------
Если долго в одних стенах живешь, ты с ними сростаешься
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
AllesKlar  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 3472
Пользователь №: 38635
На форуме: 3 года, 2 месяца, 27 дней
Карма: 184




Цитата (Stave @ 18.09.2016 - 18:51)
Даже по видеоурокам кодеры не заморачиваются методом создания и выдергивания из изображения исходного кода.

Ну, по видеоуокам, как перебрать движок на мерсе, тоже ничего сложного, даже полведра болтов остается.
Но это не означает, что на самом Мерседес мастера делают так же.

Есть официальная документация к языку + кладезь информации на форумах, где люди делятся опытом, сыном, так сказать, ошибок трудных, а не пытаются срубить бабла на видеоуроках.

Цитата (Stave @ 18.09.2016 - 18:51)
Кстати, а разве если взять из изображения исходную инфу, разве с ней не переместиться то, что вшито в якобыкартинку?

нет, берется только битмап


--------------------
[продано копирайтерам]
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Stave  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Местный житель
****

Профиль
Группа: Пользователь
Сообщений: 189
Пользователь №: 40254
На форуме: 2 года, 6 месяцев, 19 дней
Карма: 4




Цитата (AllesKlar @ 18.09.2016 - 22:34)
Цитата (Stave @ 18.09.2016 - 18:51)
Даже по видеоурокам кодеры не заморачиваются методом создания и выдергивания из изображения исходного кода.

Ну, по видеоуокам, как перебрать движок на мерсе, тоже ничего сложного, даже полведра болтов остается.
Но это не означает, что на самом Мерседес мастера делают так же.

Есть официальная документация к языку + кладезь информации на форумах, где люди делятся опытом, сыном, так сказать, ошибок трудных, а не пытаются срубить бабла на видеоуроках.

Цитата (Stave @ 18.09.2016 - 18:51)
Кстати, а разве если взять из изображения исходную инфу, разве с ней не переместиться то, что вшито в якобыкартинку?

нет, берется только битмап

Блин для меня это пока что сложно))
Встал теперь скрипт с загрузкой аватарок


--------------------
Если долго в одних стенах живешь, ты с ними сростаешься
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Stave  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Местный житель
****

Профиль
Группа: Пользователь
Сообщений: 189
Пользователь №: 40254
На форуме: 2 года, 6 месяцев, 19 дней
Карма: 4




Вот на Хабрахабр нашёл, метод


<?php
$imageinfo = getimagesize($_FILES['userfile']['tmp_name']);
if($imageinfo['mime'] != 'image/gif' && $imageinfo['mime'] != 'image/jpeg') {
echo "Sorry, we only accept GIF and JPEG images\n";
exit;
}

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

if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
echo "File is valid, and was successfully uploaded.\n";
} else {
echo "File uploading failed.\n";
}
?>


--------------------
Если долго в одних стенах живешь, ты с ними сростаешься
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Миша  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 2611
Пользователь №: 37963
На форуме: 3 года, 7 месяцев, 14 дней
Карма: 28




Цитата (Stave @ 18.09.2016 - 22:58)
Блин для меня это пока что сложно))
Встал теперь скрипт с загрузкой аватарок

Вообще ничего сложного )) Давай вместе попробуем )

1 Проверяем, что файл полностью загружен и ошибок не произошло
2 Размер не меньше и не больше допустимого
3 Пробуем получить размер изображения и его тип- getimagesize
4 Проверяем допустимый тип файла (берём из пункта 3 или exif_imagetype)
5 Получаем ресурс изображения (оригинал) - imagecreatefromjpeg
6 Создаём новое изображение с указанием размеров - imagecreatetruecolor
7 Перекладываем (копируем) изображение - imagecopyresampled
8 Записываем файл на диск с другим именем - imagejpeg
9 Уничтожить изображение

Используем GD, но при этом теряется качество изображения.


--------------------
Болтовня ничего не стоит. Покажите мне код.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Stave  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Местный житель
****

Профиль
Группа: Пользователь
Сообщений: 189
Пользователь №: 40254
На форуме: 2 года, 6 месяцев, 19 дней
Карма: 4




Ок, сегодня подключу все своё незнание php и буду собирать в скрипт)) не против, если буду делиться результатами? дабы взгляд профессионалов не помешает


--------------------
Если долго в одних стенах живешь, ты с ними сростаешься
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Миша  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 2611
Пользователь №: 37963
На форуме: 3 года, 7 месяцев, 14 дней
Карма: 28




Выкладывай, посмотрим )


--------------------
Болтовня ничего не стоит. Покажите мне код.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Stave  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Местный житель
****

Профиль
Группа: Пользователь
Сообщений: 189
Пользователь №: 40254
На форуме: 2 года, 6 месяцев, 19 дней
Карма: 4




Цитата (Медведь @ 19.09.2016 - 09:08)
Выкладывай, посмотрим )

Взглянул прямые ссылки, с телеыона)) жесть, ничего пока непонятно)


--------------------
Если долго в одних стенах живешь, ты с ними сростаешься
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Миша  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 2611
Пользователь №: 37963
На форуме: 3 года, 7 месяцев, 14 дней
Карма: 28




Это официальный сайт, а чего с телефона?

Тут ещё посмотри и тут


--------------------
Болтовня ничего не стоит. Покажите мне код.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Stave  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Местный житель
****

Профиль
Группа: Пользователь
Сообщений: 189
Пользователь №: 40254
На форуме: 2 года, 6 месяцев, 19 дней
Карма: 4




Цитата (Медведь @ 19.09.2016 - 11:07)
Это официальный сайт, а чего с телефона?

Тут ещё посмотри и тут

Да на работу ехал, смотрел с телефона


Я вот не понимаю, что делает и для чего эта функция, из приведенного скрипта:


function translit($str) {
$tr = array(
"А"=>"A","Б"=>"B","В"=>"V","Г"=>"G",
"Д"=>"D","Е"=>"E","Ж"=>"J","З"=>"Z","И"=>"I",
"Й"=>"Y","К"=>"K","Л"=>"L","М"=>"M","Н"=>"N",
"О"=>"O","П"=>"P","Р"=>"R","С"=>"S","Т"=>"T",
"У"=>"U","Ф"=>"F","Х"=>"H","Ц"=>"TS","Ч"=>"CH",
"Ш"=>"SH","Щ"=>"SCH","Ъ"=>"","Ы"=>"YI","Ь"=>"",
"Э"=>"E","Ю"=>"YU","Я"=>"YA","а"=>"a","б"=>"b",
"в"=>"v","г"=>"g","д"=>"d","е"=>"e","ж"=>"j",
"з"=>"z","и"=>"i","й"=>"y","к"=>"k","л"=>"l",
"м"=>"m","н"=>"n","о"=>"o","п"=>"p","р"=>"r",
"с"=>"s","т"=>"t","у"=>"u","ф"=>"f","х"=>"h",
"ц"=>"ts","ч"=>"ch","ш"=>"sh","щ"=>"sch","ъ"=>"y",
"ы"=>"yi","ь"=>"'","э"=>"e","ю"=>"yu","я"=>"ya",
" "=>"_","?"=>"_","/"=>"_","\\"=>"_",
"*"=>"_",":"=>"_","*"=>"_","\""=>"_","<"=>"_",
">"=>"_","|"=>"_"
);
return strtr($str,$tr);
}


--------------------
Если долго в одних стенах живешь, ты с ними сростаешься
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Stave  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Местный житель
****

Профиль
Группа: Пользователь
Сообщений: 189
Пользователь №: 40254
На форуме: 2 года, 6 месяцев, 19 дней
Карма: 4





if (exif_imagetype($_FILES['upload_cover']['name']) != IMAGETYPE_GIF)
{
echo "Изображение не является gif-изображением";
}else{
echo 'good';
}


Вообще не работает, по крайней мере у меня на хостинге.
Да и в интернете много разговоров о том, что функция полумертвая


--------------------
Если долго в одних стенах живешь, ты с ними сростаешься
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Kusss  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1445
Пользователь №: 28976
На форуме: 5 лет, 7 месяцев, 25 дней
Карма: 83




Stave
А из названия разве не понятно ? Переводит русские буквы в английские.
Варенье.jpg => varen'e.jpg
то есть - это не обязательная функция smile.gif
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Stave  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Местный житель
****

Профиль
Группа: Пользователь
Сообщений: 189
Пользователь №: 40254
На форуме: 2 года, 6 месяцев, 19 дней
Карма: 4




Цитата (Kusss @ 19.09.2016 - 23:34)
Stave
А из названия разве не понятно ? Переводит русские буквы в английские.
Варенье.jpg => varen'e.jpg
то есть - это не обязательная функция smile.gif

Привет Виталик)
У меня кстати есть тобою перепиленная версия этого скрипта) я в него смотрел, там у тебя ещё функция rename_file() есть, и translit()

Не понял просто зачем переводить, а потом следом менять имя)

Разве принятый файл с русскими буквами не сменит на генерируемые, без перевода? Думаю сменит, вот и не понял сути назначения translit(), теперь вопрос изчерпан.


Потестировал getimagesize(), пытался залить php код с расширением png/gif/jpg, функция работает и кастрирует прием такого файла.

Пока остаётся непонятным процесс создания нового и копирования изображения. Помозгуем ещё денёк))


--------------------
Если долго в одних стенах живешь, ты с ними сростаешься
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темыСтраницы: (3) [1] 2 3  Ответ в темуСоздание новой темыСоздание опроса