- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Как снизить ДРР до 4,38% и повысить продажи с помощью VK Рекламы
Для интернет-магазина инженерных систем
Мария Лосева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Я все $_post обрабатываю через mysql_escape_string($_post[blablabla])
и на сервере отключен регистр глобал.
Согласен, что можно было преобразовать все текстовые данные в нижний регистр и писать where login='blablabla' но реч идет не об этом, атом, что в фал обработчик приходит сразу два обращения в одно и тоже время которые каким то образом умудряются выполнится.
И если взять совет от dkameleon, то получится опять тоже самое!
Этот умный пользователь сделает такие же 2 запроса и баланс станет минусовым и в таблицу с заявками на выплату добавится 2 запроса и когда через CRON
обратиться в файлу проверяющий таблицу в БД с заявками на выплаты, то обработает так же все и у меня с кошелька снимется двойная сумма.
У кого какие мысли, помогите найти решение этой серьезной проблемы.
И если взять совет от dkameleon, то получится опять тоже самое!
Этот умный пользователь сделает такие же 2 запроса и баланс станет минусовым и в таблицу с заявками на выплату добавится 2 запроса и когда через CRON
обратиться в файлу проверяющий таблицу в БД с заявками на выплаты, то обработает так же все и у меня с кошелька снимется двойная сумма.
2 одновременных запроса и два последовательных запроса -- это разные вещи
Не верно, надо
if($balance <= 0){ exit("Недостаточно средств!"); }
Блокировку AJAX сделайте на JS т.е. отправился запрос, какая то переменная приняла значение 1.
У меня такая мысля в голове есть!
Может этот пользователь написать программу которая будет на разных машинах запускаться в одно и то же время и в программе будут передаваться ПОСТ параметры в мой файл обработчик, но тут опять же голову ломаю как тогда мой обработчик понимает его логин и другие данные которые хранятся в сессии на моем сервере.
У меня такая мысля в голове есть!
Может этот пользователь написать программу которая будет на разных машинах запускаться в одно и то же время и в программе будут передаваться ПОСТ параметры в мой файл обработчик, но тут опять же голову ломаю как тогда мой обработчик понимает его логин и другие данные которые хранятся в сессии на моем сервере.
У вас явно маловато знаний для работы с деньгами на php. К вашему сведению, сейчас залогиниться на любом сайте через программу - не проблема, а там уж сессии сами устанавливаются и два запроса отправляются, но это сложно... Возможно что запросы отправляются с одного компьютера, это не сложно...
Ваш код очень уязвим, и если тот человек, который накручивает себе денежки его увидит, то это обвал! Лучше заплатите профессионалам, они вам сделают эту часть кода безопаснее. Кстати, можете ко мне обратится... :)
И если взять совет от dkameleon, то получится опять тоже самое!
нет.
логика:
1. лок таблиц.
2. селект баланса.
3. если баланс больше запрошенной суммы, то:
3.1. создание заявки.
3.2. минусование баланса.
4. Анлок таблиц.
RoMaN444Ik,
Мой код который я привел в примере обрезан.
В нем нет функций sleep(2) и mysql_escape_string($_post[blablabla])
Я в этой теме прошу помочь мне с решением проблемы без оплаты за помощь.
и думаю эта тема в будущем пригодится людям.
---------- Добавлено в 17:58 ---------- Предыдущее сообщение было в 17:46 ----------
ну как так получается если баланс в первом его запросе на выплату уже равен 0
а во втором запросе проверилось в условии и закончило все функцией EXIT();
$login = // логин из сессии
$balance = // Селект баланса из таблицы юзеров
$summa = $mysql_escape_string($_post['summa']);
if($balance <= 0){ exit("Недостаточно средств!"); } // не исполнять ниже код
if($summa > balance($login)){ exit("Недостаточно средств!"); } // не исполнять ниже код
mysql_query("UPDATE `USERS_table` SET balance=balance-".$summa." WHERE `login` LIKE '".$login."'");
/* подготавливаю POST данные для передачи через CURL */
$_POST['username'] = $login;
$_POST['viplata'] = $summa; и тд..
$state = pay($_POST); /* и отдаю на другой сервер где подключены XML интерфейсы WEBMONEY */
if($state==0){
mysql_query("UPDATE `PAY_table` SET `state`='1' WHERE `id`=".$order_id);
exit("Счет обработан, Деньги выплачены!"); // не исполнять ниже код
} else {
mysql_query("UPDATE `USERS_table` SET balance=balance+".$summa." WHERE `login` LIKE '".$login."'");
mysql_query("UPDATE `PAY_table` SET `state`='2' WHERE `id`=".$order_id);
}
goodier, у вас всё это на локалке или где-то на фтп уже лежит? Если так, скиньте в личку доступ, я посмотрю на эти чудеса, как там отправляется два раза данные.
нет.
логика:
1. лок таблиц.
2. селект баланса.
3. если баланс больше запрошенной суммы, то:
3.1. создание заявки.
3.2. минусование баланса.
4. Анлок таблиц.
кстати, по идее это можно красивее даже решить с триггером, если они атомарные. на счет этого не знаю.
goodier, у вас всё это на локалке или где-то на фтп уже лежит? Если так, скиньте в личку доступ, я посмотрю на эти чудеса, как там отправляется два раза данные.
у меня все это работает на сервере и доступ дать не могу, так как работаю с деньгами.