Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » Активные темы » Основы PHP...

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26

Открыть новую тему     Написать ответ в эту тему

Vladsvn

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
почему не отображать его СРАЗУ модератору, без каких либо кликов.
Я тоже имел в виду, что когда модератор откроет страницу, то эти номера он увидит сразу у всех комментариев. и если какой-то нужно исправить, то кликнет по его номеру и через сервис модерирования, которого пока что нет и который предстоит сделать, получит контент непосредственно из базы для исправления (удаления).

Всего записей: 340 | Зарегистр. 07-09-2016 | Отправлено: 23:12 07-08-2022 | Исправлено: Vladsvn, 23:13 07-08-2022
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vladsvn
делайте как вам удобнее и как вы понимаете лучше. обычно так и есть - у каждого сообщения у модератора (когда залогинен) появляются дополнительные инструменты для его обработки.

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 23:24 07-08-2022
Vladsvn

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасибо!

Всего записей: 340 | Зарегистр. 07-09-2016 | Отправлено: 23:37 07-08-2022
Vladsvn

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый вечер!
 
Пытаюсь сделать профайл для посетителя, но возникли большие проблемы, с которыми не знаю, как справиться. Макет находится вот здесь: http://fh7929mi.bget.ru/profile/index.php
 
На практике скрипт доступен только зарегистрированным лицам и инфа хранится в базе, но для макета имитируем регистрацию и пишем в файл.
 
Общая идея: посетитель заносит фото (ему видна миниатюра с крестиком) и делает подпись под ним. Если занесенное фото или подпись ему не нравятся, он кликом по крестику удаляет фото и закачивает другое, меняет подпись. Кликает Сохранить.
 
После обновления страницы (при повторном заходе) он видит ту же ранее записанную миниатюру и подпись, которые может как и прежде заменить или удалить.
 
Это идея. А на практике я не знаю, как получить миниатюру при обновлении страницы. Просто воспроизвести картинку получается, а вот "загнать" её в миниатюру не удается. Как это сделать? И возможно ли такое вообще?
 
И второе: как при клике по крестику вызвать файл del.php, который удалит ненужную картинку?
 
Файлы:
index.php
Подробнее...  
 
pro-set.php
Подробнее...  
 
 del.php
 
Подробнее...  
 
upload-1.php
Подробнее...  
 
Файлы  CSS и JS лучше всего смотреть непосредственно на сервере.  
 

Всего записей: 340 | Зарегистр. 07-09-2016 | Отправлено: 00:02 14-08-2022 | Исправлено: Vladsvn, 00:08 14-08-2022
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vladsvn
непонятно, что вызывает сложности.
 
1) при разработке не используйте 301, а 302 - иначе браузер жестко запоминает и это может вызвать проблемы
2)
Цитата:
А на практике я не знаю, как получить миниатюру при обновлении страницы.

ну вы же привязали, после заливки, картинку к аккаунту. ну так и используйте ее.
создаете сразу

Цитата:
<div id="comment_uploader_1"><div class="andropov_uploader__preview_item__inner"><div class="andropov_preview--image" style="min-height: 80px; min-width: 80px"><img style="max-width: 80px; max-height: 80px;" src="/profile/1/35.jpg"></div><div class="andropov_uploader__preview_item__remove" onclick="f(comment_uploader_1);"></div></div></div>

и подставляете нужный URL
 

Цитата:
как при клике по крестику вызвать файл del.php, который удалит ненужную картинку?

если с обновлением страницы - просто ссылку, которая удалит, потом снова покажет страницу
если без - ajax запрос к серверу, который сделает запрос к серверу и если ответ положительный, то можно тупо удалить содержимое <div id="comment_uploader_1">
 
учитывая, что у вас уже используется ES6, то можно обойтись и без
Цитата:
var req = new XMLHttpRequest();  
и остальной конструкции.
https://learn.javascript.ru/fetch

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 00:20 14-08-2022
Vladsvn

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
1) при разработке не используйте 301, а 302 - иначе браузер жестко запоминает и это может вызвать проблемы
Это точно! Умучился очищать браузер. Тупо показывает удаленные картинки.  
Спасибо!
 

Цитата:
ну вы же привязали, после заливки, картинку к аккаунту. ну так и используйте ее.
создаете сразу
 
Цитата:
<div id="comment_uploader_1"><div class="andropov_uploader__preview_item__inner"><div class="andropov_preview--image" style="min-height: 80px; min-width: 80px"><img style="max-width: 80px; max-height: 80px;" src="/profile/1/35.jpg"></div><div class="andropov_uploader__preview_item__remove" onclick="f(comment_uploader_1);"></div></div></div>
 
и подставляете нужный URL
Откуда цитата? Вот это бы поподробнее...
 

Всего записей: 340 | Зарегистр. 07-09-2016 | Отправлено: 00:34 14-08-2022
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vladsvn

Цитата:
Вот это бы поподробнее.

из кода страницы после выборки любого файла. вам нужно воспроизвести что происходит при выборе картинки.
это же возвращает php код после заливки

Код:
data: "comment_uploader_1.innerHTML = \"<div class=\\\"andropov_uploader__preview_item__inner\\\"><div class=\\\"andropov_preview--image\\\" style=\\\"min-height: 80px; min-width: 80px\\\"><img style=\\\"max-width: 80px; max-height: 80px;\\\" src=\\\"/profile/1/35.jpg\\\"></div><div class=\\\"andropov_uploader__preview_item__remove\\\" onclick=\\\"f(comment_uploader_1);\\\"></div></div>\";"

 
на самом деле топорно.. использует функцию eval, что вообще нежелательно.. но для первоначального изучения.. для чего то несерьезного - пойлет.

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 00:45 14-08-2022 | Исправлено: Mavrikii, 00:46 14-08-2022
Vladsvn

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
использует функцию eval, что вообще нежелательно..
Да, нехорошо...  
 
Хотя, как мне кажется, в данном случае уязвимость не возникает. Или возникает?
 
Подробнее...  

Всего записей: 340 | Зарегистр. 07-09-2016 | Отправлено: 11:51 15-08-2022
Samovarov



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vladsvn

Цитата:
Хотя, как мне кажется, в данном случае уязвимость не возникает. Или возникает?

Может да, может нет. Зависит от того что пришло.
 
Совсем не понятно зачем на сервере формировать js, а в данном случае и HTML
 
Почему нельзя просто url картинки получать.
 
Примеры в файлах - жесть. Вёрстка, стили, логика - все перемешано.
 
 
Добавлено:
> И второе: как при клике по крестику вызвать файл del.php, который удалит ненужную картинку?
 
Нужно вешать событие на кнопку и отправлять идентификатор файла (название, ID или что там у вас) в ваш php скрипт удаления.  
 
Но у вас все неправильно.  
 
Добавлено:
Почему вы, в первый раз, не отдаете просто статическую верстку с картинками, а юзаете дикий евент и загрузку по ajaxу? Если этот кусок шаблона должен грузить при нажатии по ссылке "фото", почему, тогда на этот клик и не повесить загрузку?  
 
Добавлено:
Есть маленький монолитный фреймворк, у которого на борту все - и маршрутизация, и шаблонизация и ORM
 
Я писал на нем пару утилит, давно правда, но он весьма не плох и помогает понять MVC
 
Вам это нужно.
 
Добавлено:
https://habr.com/ru/post/135619/

Всего записей: 357 | Зарегистр. 20-03-2002 | Отправлено: 16:34 15-08-2022 | Исправлено: Samovarov, 17:11 15-08-2022
Vladsvn

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Вёрстка, стили, логика - все перемешано.
Это даже я заметил. Чтобы понять, что делает данный класс, тыркаешься и по CSS, и по JS. У меня вообще принцип - ID для логики, классы для дизайна. Но программеры этого не любят и используют очень много своих старых наработок. Приходится мириться.
 
Есть такое жизненное выражение: "Если хочешь сделать хорошо, сделай сам".  К сожалению, в этой области самодеятельность мне недоступна.

Всего записей: 340 | Зарегистр. 07-09-2016 | Отправлено: 17:34 15-08-2022
Samovarov



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vladsvn

Цитата:
Но программеры этого не любят и используют очень много своих старых наработок

Человек, просто, учился, на вашем сайте, но так ни чему и не выучился. Увы.

Всего записей: 357 | Зарегистр. 20-03-2002 | Отправлено: 17:37 15-08-2022
Vladsvn

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А с другой стороны, всё это лирика, на работу не влияет и для пользователей всё это совершенно безразлично, а ведь их интересы превыше всего.
 
Предположим, что я каким-то образом заглянул во внутренности Вашего компьютера и говорю, что все это жесть:
- провода использованы не того цвета;
- винты допотопные с чечевичной головкой"
- платы половина из желтого, а половина из голубого стеклотекстолита.
 
И что Вы на это скажете?

Всего записей: 340 | Зарегистр. 07-09-2016 | Отправлено: 18:22 15-08-2022
Samovarov



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vladsvn

Цитата:
И что Вы на это скажете?

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

Всего записей: 357 | Зарегистр. 20-03-2002 | Отправлено: 18:59 15-08-2022 | Исправлено: Samovarov, 19:00 15-08-2022
Vladsvn

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
пишите нормально сразу

Между прочим, Вы же мне давали ссылку на статью о преждевременной оптимизации, где говорится о том, что надо прежде всего обеспечить функционал, ни на что иное не обращая внимания, и что правильно работающий код гораздо легче привести в цивильный вид, чем правильно написанный, но неверно работающий (по памяти так).  

Всего записей: 340 | Зарегистр. 07-09-2016 | Отправлено: 21:35 15-08-2022 | Исправлено: Vladsvn, 21:58 15-08-2022
Samovarov



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vladsvn

Цитата:
что надо прежде всего обеспечить функционал, ни на что иное не обращая внимания

Преждевременная оптимизация делает код сложным для чтения человеком, а, значит, и для его поддержания. Но ваш код вообще неверный. Его сразу в мусорку.  
 
Начните с чего то одного. Вам туго дается JS. Обойдитесь пока без него. Ваши задачи это позволяют. Не надо js генерить на беке, пожалуйста. Не в том виде, что вы делаете сейчас.

Всего записей: 357 | Зарегистр. 20-03-2002 | Отправлено: 22:15 15-08-2022
Vladsvn

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Но ваш код вообще неверный. Его сразу в мусорку.
Ну, так я тоже не могу.
Да и ради какой светлой идеи? Чтобы те же закорючки расположить по другому?
 
Как показывает мой скромный опыт, каждый фрилансер обвиняет предыдущего в некачественной работе, а потом клепает тоже самое и на этапе настройки, когда выявляются проблемы, просто исчезает.
 
Уговорить внести коррективы просто невозможно - каждый предлагает сделать всё с нуля. И с нуля начинали дважды, да все это одно и тоже. Те же яйца, вид сбоку.  
 
Так что будем ползти дальше. Избегая преждевременной оптимизации.  
 
 
Добавлено:
Требуется удалить находящийся в папке файл, если он там есть. Задача простая, но, почему-то, не получается:
 
if(is_readable("photo/".$file_photo_1)) unlink("photo/".$file_photo_1);
if(file_exists("photo/".$file_photo_1)) unlink("photo/".$file_photo_1);
 
Получаем сообщение об ошибке:
[16-Aug-2022 16:28:58 Europe/Moscow] PHP Warning:  unlink(photo/) [<a href='0function.unlink0'>function.unlink0</a>]: Is a directory in /home/b/bkru42/sv.ru/public_html/profile/upload-1.php on line 6
 
Как корректно решить эту задачу?

Всего записей: 340 | Зарегистр. 07-09-2016 | Отправлено: 11:52 16-08-2022
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vladsvn

Цитата:
Как корректно решить эту задачу?

определить что переменная $file_photo_1 не пустая (а тут у нее нет значения).
и есть еще is_file функция, так как в данном случае пытаетесь удалить папку photo.
 

Цитата:
is_readable("photo/".$file_photo_1)

тогда уж is_writable, ибо чтение не означает, что файл можно удалить или изменить.

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 20:04 16-08-2022 | Исправлено: Mavrikii, 20:05 16-08-2022
Samovarov



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vladsvn

Цитата:
Как корректно решить эту задачу?

Проверить что находится в $file_photo_1. Судя по всему - ничего.
 

Цитата:
Да и ради какой светлой идеи? Чтобы те же закорючки расположить по другому?

Чтобы в только что написанном коде не искать багу 2 часа, например.  
 
Ладно. Хозяин барин.

Всего записей: 357 | Зарегистр. 20-03-2002 | Отправлено: 20:21 16-08-2022
Vladsvn

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый день!
 
Как показала практика, посетители чаще всего заносят на сайт фото, сделанные с телефона, шириной несколько тысяч пикселей и весом в несколько Мб. Эти параметры избыточны, поскольку окно для просмотра на сайте 500 пикселей. Соответственно, есть смысл сжать занесенные фото до этой ширины, сохранив пропорции.
 
Как я вижу, в арсенале РНР есть много функций, пригодных для этого, причем у некоторых параметры частично пересекаются, так что приходится какой-то инструмент выбирать  волевым решением.
 
Я сделал скрипт вот такой простенький. Вроде бы, работает, но есть сомнения, поскольку графика - дело незнакомое. Не могли бы Вы взглянуть и сказать, можно ли его использовать или там что-то некорректно?
 
Подробнее...  
 
 
 
 
   
 

Всего записей: 340 | Зарегистр. 07-09-2016 | Отправлено: 14:32 21-08-2022
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vladsvn
пробуйте и проверяйте.
 

Код:
$filename = 'photo/898.gif';
 
    $info  = getimagesize($filename);
    $width_old  = $info[0];
    $height_old = $info[1];
    $type = $info[2];
 
    switch ($type) {
        case IMG_GIF:
            $img = imageCreateFromGif($filename);
            imageSaveAlpha($img, true);
            break;
        case IMG_JPG:
            $img = imageCreateFromJpeg($filename);
            break;
        case IMG_PNG:
            $img = imageCreateFromPng($filename);
            imageSaveAlpha($img, true);
            break;
        default: // неподдерживаемый тип, делаете что нужно
    }
 
    $width_new = 500;
 
    $k_width = $width_old / $width_new;
    $height_new = ceil($height_old / $k_width);
 
    $tmp = imageCreateTrueColor($width_new, $height_new);
    imageCopyResampled($tmp, $img, 0, 0, 0, 0, $width_new, $height_new, $width_old, $height_old);
 
    unlink($filename);
 
    if ($type == IMG_GIF) imageGif ($tmp, $filename);
    elseif ($type == IMG_JPG) imagejpeg($tmp, $filename);
    elseif ($type == IMG_PNG) imagePng ($tmp, $filename);

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

Цитата:
    $k_width = $width_old / $width_new;
    $height_new = ceil($height_old / $k_width);

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 22:29 21-08-2022 | Исправлено: Mavrikii, 22:31 21-08-2022
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26

Компьютерный форум Ru.Board » Интернет » Web-программирование » Активные темы » Основы PHP...


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru