PHP - Запретить обновление файла.

kkolorid
На сайте с 14.01.2013
Offline
14
527

Есть файл, который принимает данные POST с сайта Perfect Money и делает нужные операции по начислению. И если обновлять этот файл, операции будут повторятся без платежа. Как мне это обойти? Я временно сделал редирект с задержкой маленькой "sleep (5);". Но мне кажется это не так уж и надежно...

LEOnidUKG
На сайте с 25.11.2006
Offline
1774
#1

Если я конечно правильно нагадал на кофейной гуще, но вам нужно использовать API уведомления своего скрипта о платеже. Тогда пользователю ничего не нужно будет отправлять всё будет делаться внутри сервера. И тогда повторить запрос не возможно будет.

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
IL
На сайте с 20.04.2007
Offline
435
#2
kkolorid:
который принимает данные POST с сайта Perfect Money и делает нужные операции по начислению. И если обновлять этот файл, операции будут повторятся без платежа.

Если передаётся ID-шник платежа, фиксировать, были ли уже операции по этому платежу..

Если не передаётся - передавать.

p.s. зачётный вопрос..

p.p.s. вообще, файл, который принимает данные с платёжного сервиса не должен быть доступен "обычному" пользователю.. Т.е. он отличается от URL возврата

... :) Облачные серверы от RegRu - промокод 3F85-3D10-806D-7224 ( http://levik.info/regru )
dkameleon
На сайте с 09.12.2005
Offline
386
#3
kkolorid:
Есть файл, который принимает данные POST с сайта Perfect Money и делает нужные операции по начислению. И если обновлять этот файл, операции будут повторятся без платежа. Как мне это обойти? Я временно сделал редирект с задержкой маленькой "sleep (5);". Но мне кажется это не так уж и надежно...

убрать руки от программирования и НИКОГДА не прикасаться к клавиатуре с такими "идеями" защиты при работе с деньгами.

- у вас должна быть запись в базе с идентификатором платежа, которая ЕДИНОЖДЫ переводится в статус "оплачено". идентификатор передается от сайста платежки.

- идентификатор передается на служебный урл, который снаружи не светится и при всем желании Ф5 нажать и повторно отправить данные нельзя.

- к служебному урлу можно (и нужно) запретить доступ со всех ИП, кроме принадлежащих платежке.

Дизайн интерьера (http://balabukha.com/)
IL
На сайте с 20.04.2007
Offline
435
#4
dkameleon:
- к служебному урлу можно (и нужно) запретить доступ со всех ИП, кроме принадлежащих платежке.

Тут такой трабл возможен... платёжки иногда IP-шники меняют :D

Понятно, если саппорт онлайн 24/7/365... можно вычислить быстро.

А ежели весь проект - один человек, уезжающий в отпуск/на дачу итд, есть шанс получить кучу негатива. :D

dkameleon
На сайте с 09.12.2005
Offline
386
#5
ivan-lev:
Понятно, если саппорт онлайн 24/7/365... можно вычислить быстро.

если нет сапорта и у сервиса больше десятка транзакций в сутки - на негатив из-за случайных сбоев можно тоже нарваться :)

так что сапорт это практически необходимая опция.

kkolorid
На сайте с 14.01.2013
Offline
14
#6

Друзья, спасибо за советы, вы такие добрые ппц ! Тролли...

---------- Добавлено 06.08.2013 в 13:50 ----------

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

---------- Добавлено 06.08.2013 в 14:16 ----------

dkameleon:
убрать руки от программирования и НИКОГДА не прикасаться к клавиатуре с такими "идеями" защиты при работе с деньгами.

- у вас должна быть запись в базе с идентификатором платежа, которая ЕДИНОЖДЫ переводится в статус "оплачено". идентификатор передается от сайста платежки.
- идентификатор передается на служебный урл, который снаружи не светится и при всем желании Ф5 нажать и повторно отправить данные нельзя.
- к служебному урлу можно (и нужно) запретить доступ со всех ИП, кроме принадлежащих платежке.

Сделал по вашему совету. Спасибку не поставлю, руки кривые :(

dkameleon
На сайте с 09.12.2005
Offline
386
#7
kkolorid:
Сделал по вашему совету. Спасибку не поставлю, руки кривые

и не надо. главное, чтоб потом не возникла тема: "украли все деньги" или "украли весь товар" :) это будет лучше любой спасибки.

SeVlad
На сайте с 03.11.2008
Offline
1609
#8
kkolorid:
И мой редирект так быстро проходит, что пользователь ни чего сделает.

Ну-да-ну-да :)

SeoNizator:
Старый электрик (СЭ) оставляет молодого (М) возле электрощитка:
СЭ: Смотри. Я выключил рубильник. Пойду ремонтировать розетку, а ты стой тут и смотри, что бы никто не включил.

Ушел..
Через время прибегает в глазами на выкате, матами в 5 этажей.. молодому:
А!! Кто?!! Что?!! Почему?!! Какого.. я в розетке.. за провод, а меня как ё..!!!
Кто включал рубильник?!!

М: (потупив взор) ммм.. уууу.. я только на секундочку... А что, успело добежать?

Вникай:

Милованов Ю.С:
Это не то что не правильно, это КРИТИНИЗМ!!!
Попал как-то на такой сайт(давно, ещ не знал вообще как это работает). Так вот, при нажатии на F5 у меня увеличивался баланс.
То есть закинул я через робокассу на сайт 100 рублей. В самом конце платежа, при переходе на сакессУрл надо просто потыкать F5 и баланс будет увеличиваться на сумму платежа.
Делаю хорошие сайты хорошим людям. Предпочтение коммерческим направлениям. Связь со мной через http://wp.me/P3YHjQ-3.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий