Есть форма, если в корзине есть товар, то доступна форма отправки заказа, после введенных данных о клиенте, форма отправляется, письма по событию уходят. После отправки формы появляется страница благодарности за заказ.
Суть проблемы: через, например, пару дней, клиент открывает браузер на своем смартфоне и все его вкладки заново открываются, включая страницы, которые он не закрывал и происходит повторная отправка формы. Шеф видит, что прилетел новый заказ, но в заказе отсутствуют товары, это и логично, так как после отправки корзина обнуляется, а клиенту опять приходит письмо и он в недоумении.
Можно было бы сделать редирект после заказа, но после заказа нужно выводить номер заказа и другие данные об успешной отправки и параметрах заказа. Иными словами, можно ли запретить повторную отправку формы без редиректов куда-либо и без использования капчи?
Время от времени смотрю рынок вакансий, скорее из-за интереса. В частности смотрю в сторону Битрикса.
Читаю обязанности:
Работа с HTML, CSS, PHP, верстать шаблоны, писать свои модули, настраивать сервера, добавлять контент, работа с почтой, 1с бухучет, мускул и т.п., включая JS
С каких пор это стало нормальным требованием? Мне всегда казалось, что верстальщик должен верстать, менеджер работать с контентом, сисадмин с серверами, программисты пишут модули.
Это ни что иное, как попытка экономить на штате. Но если в веб-студиях с этим еще более менее нормально, то всякого рода мелкие компании-владельцы интернет-магазинов ищут именно таких людей.
С одной стороны это зло. Оно не дает развиваться в одном направлении. С другой стороны это развивает универсальность и в итоге получается, что вроде разбираешься во всем, что касается работы сайтов и в то же время ни в чем не разбираешься идеально. От сюда говнокод и постоянные баги, желание объять не объятное, отсутствие времени на изучение каждого направления.
Вот честно. Не пойму никогда. Если человек умеет писать модули для различных CMS, то какой смысл ему работать у такого работодателя. Если бы, например я, умел писать различные решения, то я бы их давно продавал на каком-нибудь Маркете.
Я придерживаюсь мнения, что крупные проекты, типа порталов и интернет-магазинов должны разрабатываться и поддерживаться исключительно специалистами в своей сфере. Когда всю работу делает один человек, это не может быть идеальным воплощением проекта. Но видимо вопрос лишь в деньгах.
Все это напоминает мне кухню. Когда нет повара горячего и холодного цеха или суши-шефа, то все это делает самоучка-универсал. Вроде есть можно, но не вкусно, за то дешево.
Что скажите?
С каких пор это стало нормальным требованием?
Ну во первых это "немножко мечты" работодателя. Вы думаете, что если бы было просто найти подобного сотрудника - объявления про эти вакансии долго бы висели?
Работа с HTML, CSS, PHP, верстать шаблоны, писать свои модули, настраивать сервера, добавлять контент, работа с почтой, 1с бухучет, мускул и т.п., включая JS
"опытный эникей" ищется.
ничего такого сверхсложного я тут не вижу.
вы не пугайтесь - там же не предполагается, что все это эникей должен знать назубок и по высшему разряду.
Мне всегда казалось, что верстальщик должен верстать, менеджер работать с контентом, сисадмин с серверами, программисты пишут модули.
ага - а тестировать не программист, а специально выделенный тестировщик, что ли?
и CI/CD не сисадмин и не программист делает, а выделенный девопс?
это все зависит зависит от масштабов деятельности, от специализации фирмы и пр. и пр.
даже по вашему выходит что это
1 человек VS 4 разных человека
то есть (не вдаваясь в детали у кого какая оплата) - это в 4 раза дороже.
плюс их всех еще загрузить работой нужно полный рабочий день...
вы же понимаете, что если все это на одного-единственного человека работа - то четверым там просто делать будет нечего более чем 2 рабочих часа в день каждому?
это просто другие профессиональные задачи, другие цели у фирмы.
и ответ на ваш вопрос - да, это нормально.
эникеи тоже нужны.
Не, редирект в любом виде мне не нравится. Есть вероятность, что клиент нажмет "Назад", его браузер спросит "отправить повторно форму", и клиент обязательно нажмет "отправить".
anton99zel, юзер нажимает назад чаще всего чтобы посмотреть еще раз, чего ж такого он заказал или на какую сумму. Почему бы не дать юзеру страницу с подробной информацией о только что совершенном заказе? Мне, как юзеру, например, не хотелось бы лезть на почту, отыскивать там письмо ради похвастаться ссылкой перед друзьями.
Да и от формы как таковой тоже можно избавиться.
Александр, проверил код, у меня и не было формы. вернее формы лишь собирает данные и уже по api идет добавление заказа.
Добавил перед API $cart_num == 0 (если кол-во товаров ровно 0, то...)
if (empty($_REQUEST['ORDER_PROP_1']) || empty($_REQUEST['ORDER_PROP_2']) || empty($_REQUEST['ORDER_PROP_3']) ||
empty($_REQUEST['DELIVERY_ID']) || ($cart_num == 0)
|| empty($_REQUEST['PAY_SYSTEM_ID'])) {
echo 'Что-то пошло не так!....
Это верное решение? Я проверил - первый раз отправился заказ, потом корзина сразу обнулилась и при повторном обновлении страницы выдало заготовленный текст ошибки