![]() 5 / 5 / 0
Регистрация: 21.02.2020
Сообщений: 31
|
||||||||||||||||
Подтверждение перезаписи при загрузке файла на сервер через форму21.02.2020, 19:45. Показов 1824. Ответов 19
Метки нет Все метки)
(
У меня есть форма, которая загружает файл на сервер. Файл при загрузке меняет название на выбранную дату. Я хочу выдать подтверждение при загрузке файла, если такой файл уже существует и при нажатии на соответствующую кнопку заменить или не заменить файл. Для этого я создал папку tmp, в которую я помещаю временные файлы. И теоретически, когда вы нажимаете «да», файл из временной папки должен перезаписывать файл в основной.
0
|
21.02.2020, 19:45 | |
Ответы с готовыми решениями:
19
|
![]() 2484 / 1408 / 667
Регистрация: 23.08.2015
Сообщений: 3,550
|
|||||||||||||||||||||
21.02.2020, 21:13 | |||||||||||||||||||||
![]() Решение
3kuta, Я бы написал пару вспомогательных классов
Код не проверял. Надеюсь понятна идея.
1
|
![]() 5 / 5 / 0
Регистрация: 21.02.2020
Сообщений: 31
|
||||||
22.02.2020, 15:08 [ТС] | ||||||
Как понимаю, что-то нужно с этим сделать:
0
|
![]() 2484 / 1408 / 667
Регистрация: 23.08.2015
Сообщений: 3,550
|
|||||||||||
22.02.2020, 15:19 | |||||||||||
3kuta,
3kuta, Я код просто не тестировал, по началу думал возвращать ключ. Т.е. строку, протом переделал на объект, а в методе public function save(DtoFile $dto): string Забыл поменять тип возвращаемого значения. Нужно public function save(DtoFile $dto): DtoFile Добавлено через 5 минут Хотя в принципе нам то и не нужно ничего возвращать) Мы же это никак не используем.
Так как в php все объекты передаются по ссылке. Там мы кроме того, что сохраняем в сессию еще присваиваем id.
0
|
![]() 5 / 5 / 0
Регистрация: 21.02.2020
Сообщений: 31
|
|||||||||||||||||||||||||||||||
22.02.2020, 15:39 [ТС] | |||||||||||||||||||||||||||||||
В общем мне не разобраться)
Теперь похоже эта штука не получает ничего и редиректит, не показывая вторую форму, на главную.
index.php
class.php
0
|
![]() 2484 / 1408 / 667
Регистрация: 23.08.2015
Сообщений: 3,550
|
||
22.02.2020, 15:59 | ||
3kuta, Я прошу прощения)) Это потому что мы редиректили с параметром id
header('Location: file_exists.php?id=' . $dto->id); А пытаемся достать key if(!$dto = $store->get($_GET['key'] ?? '')) { Измените на id if(!$dto = $store->get($_GET['id'] ?? '')) { Добавлено через 16 минут Просто делать в одном php чисто из-за того, что это отностится к какой-то одной глобальной операции особого смысла нет. Так как потом будут возникать вопросы, типа "а почему у меня вместо одной стадии выводится другая и т.д. Я же тут кучу if/else понаписал, и не могу сам разобраться") Потом, если захотите можете перевести все это дело на ajax.
1
|
![]() 5 / 5 / 0
Регистрация: 21.02.2020
Сообщений: 31
|
||||||
22.02.2020, 16:28 [ТС] | ||||||
sad67man, а возможно приостанавливать выполнения кода в index.php пока не получен ответ от второй формы?
У меня после
0
|
![]() 2484 / 1408 / 667
Регистрация: 23.08.2015
Сообщений: 3,550
|
|
22.02.2020, 16:43 | |
3kuta, Лучше вынести ваш INSERT в отдельную функцию, либо метод класса для повторного использования. И вызвать в блоке $_POST['overwrite']
Добавлено через 3 минуты 3kuta, Если вам нужны будут дополнительные поля из формы. Вы можете их добавить в $dto, сохраняя их в сессии, соответственно нужно будет дополнить storage. Добавлено через 2 минуты И так-же в метод/функцию insert вы можете принимать ваш $dto
0
|
![]() 5 / 5 / 0
Регистрация: 21.02.2020
Сообщений: 31
|
|||||||||||
23.02.2020, 11:21 [ТС] | |||||||||||
sad67man, сейчас это выглядит вот так:
0
|
![]() 5 / 5 / 0
Регистрация: 21.02.2020
Сообщений: 31
|
||||||||||||||||
24.02.2020, 20:16 [ТС] | ||||||||||||||||
sad67man,
Как-то так: index.php
0
|
![]() 2484 / 1408 / 667
Регистрация: 23.08.2015
Сообщений: 3,550
|
|
25.02.2020, 01:49 | |
3kuta, Не плохо), Вы уже начинаете осваивать ООП)
Замечания будут позже, А пока ознакомьтесь с такой штукой. Есть список общепринятых стандартов https://www.php-fig.org/psr/ Про каждый из них вы сможете найти объяснения на русском языке на просторах интернета. Сейчас хочу обратить внимание на то, что каждый класс должен располагаться в отдельном файле. Так же обратите внимание на psr-4 - автозагрузка классов. Вот первая попавшееся статья https://klisl.com/composer_autoload.html Сейчас ни один проект не обходится без composer-а Если сможете с ним разобраться и перевести проект на автозагрузку классов через composer, то будет очень здорово)
0
|
![]() 5 / 5 / 0
Регистрация: 21.02.2020
Сообщений: 31
|
|||||||||||||||||||||
27.02.2020, 17:45 [ТС] | |||||||||||||||||||||
sad67man, а теперь?
![]() Много кода, поэтому в архиве. Появился еще вопрос: "Почему у меня на второй форме при нажатии только со второго раза срабатывает переход на главную?". Не могу разобраться ![]() Расположение файлов во вложении скрином (1.PNG). composer.json
0
|
![]() 2484 / 1408 / 667
Регистрация: 23.08.2015
Сообщений: 3,550
|
||||||||
27.02.2020, 18:27 | ||||||||
0
|
![]() 2484 / 1408 / 667
Регистрация: 23.08.2015
Сообщений: 3,550
|
|||||||||||||||||||||||||||||||||||||||||||||||||||
06.03.2020, 23:38 | |||||||||||||||||||||||||||||||||||||||||||||||||||
3kuta, Ну чтож, пойдем дальше. Я не знаю на сколько вы продвинулись. Пройдемся для начала по критическим моментам.
1) это безопасность. Первое, это вывод значений, если я при заполнении формы напишу какие-нибудь теги. То в лучшем случае у вас полетит верстка, а могут и внедрить скрипты, типа <script>alert(123)</script> Есть такая функция htmlspecialchars. Которая преобразует специальные символы в HTML-сущности. Тогда вывод должен быть таким.
Ну чтоб каждый раз не писать htmlspecialchars можно написать некий хэлпер
Теперь можем выводить так
Далее, мы в шаблоне html обращаемся к базе данных
Представьте, что у нас есть 2 контекста. Первый - это блок php. А второй это шаблон. И php в зависимости от контекста выполняет 2 различные функции. В первом случае это серверный язык, а в другом обычный шаблонизатор. Вынесем эту логику в блок php.
Добавлено через 21 минуту И второй момент. Более критический. Это SQL инъекции. В форме я могу ввести такую строку, которая поломает сам sql запрос. Более того, могу внедрить свой запрос, ну к примеру.
PDO:: prepare Я вам рекомендую вместо misqli использовать PDO. Так как он более универсален, и может работать не только с mysql. Это будет ваше "домашнее задание"). Если будете справляться. То тогда расскажу еще кучу полезных вещей)
0
|
06.03.2020, 23:38 | |
Помогаю со студенческими работами здесь
20
Название файла при загрузке на сервер
При загрузке файла на сервер меняется кодировка Кодировка при загрузке файла на FTP сервер
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Опции темы | |
|
Новые блоги и статьи
![]() |
||||
Система статов в Unity
GameUnited 20.04.2025
Статы — фундаментальный элемент игрового дизайна, который определяет характеристики персонажей, предметов и других объектов в игровом мире. Будь то показатель силы в RPG, скорость передвижения в. . .
|
Статические свойства и методы в TypeScript
run.dev 20.04.2025
TypeScript прочно занял своё место в системе современной веб-разработки. Этот строго типизированный язык программирования не просто расширяет возможности JavaScript — он делает разработку более. . .
|
Batch Transform и Batch Gizmo Drawing API в Unity
GameUnited 20.04.2025
В мире разработки игр и приложений на Unity производительность всегда была критическим фактором успеха. Создатели игр постоянно балансируют между визуальной привлекательностью и плавностью работы. . .
|
Звук в Unity: Рандомизация с Audio Random Container
GameUnited 20.04.2025
В современных играх звуковое оформление часто становится элементом, который либо полностью погружает игрока в виртуальный мир, либо разрушает атмосферу за считанные минуты. Представьте: вы исследуете. . .
|
Максимальная производительность C#: Советы, тестирование и заключение
stackOverflow 20.04.2025
Погружение в мир микрооптимизаций C# открывает перед разработчиком целый арсенал мощных техник. Но как определить, где и когда их применять? Ответ начинается с точных измерений и профилирования.
. . .
|
Максимальная производительность C#: Предсказание ветвлений
stackOverflow 20.04.2025
Третий ключевой аспект низкоуровневой оптимизации — предсказание ветвлений. Эта тема менее известна среди разработчиков, но её влияние на производительность может быть колоссальным. Чтобы понять. . .
|
Максимальная производительность C#: Векторизация (SIMD)
stackOverflow 20.04.2025
Помимо работы с кэшем, другим ключевым аспектом низкоуровневой оптимизации является векторизация вычислений. SIMD (Single Instruction, Multiple Data) позволяет обрабатывать несколько элементов данных. . .
|
Максимальная производительность C#: Процессорный кэш
stackOverflow 20.04.2025
Знакомство с внутренним устройством процессорного кэша — ключевой шаг в написании по-настоящему быстрого кода на C#. Этот слой архитектуры компьютера часто ускользает от внимания разработчиков, но. . .
|
Максимальная производительность C#: Введение в микрооптимизации
stackOverflow 20.04.2025
В мире разработки на C# многие привыкли полагаться на . NET Runtime, который "магическим образом" сам оптимизирует код. И часто это работает - современные JIT-компиляторы творят чудеса. Но когда речь. . .
|
MVC фреймворк в PHP
Jason-Webb 19.04.2025
Архитектурный паттерн Model-View-Controller (MVC) – это не просто модный термин из мира веб-разработки. Для PHP-программистов это фундаментальный подход к организации кода, который радикально меняет. . .
|