- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу

В 2023 году Одноклассники пресекли более 9 млн подозрительных входов в учетные записи
И выявили более 7 млн подозрительных пользователей
Оксана Мамчуева

Зачем быть уникальным в мире, где все можно скопировать
Почему так важна уникальность текста и как она влияет на SEO
Ingate Organic
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Я так понял файл lock может иметь название какое угодно и если я его буду при обращении к обработчику создавать файл с таким же именем как у пользователя, то другие пользователи не пострадают?
конечно, это даже распараллелит процесс. при условии что ваша pay функция не пишет в какие-нибудь общие для всех пользователей переменные.
вот здесь почитайте http://stackoverflow.com/questions/2921469/php-mutual-exclusion-mutex
опечатался, имелась ввиду php функция abs, которая возвращает модуль числа
goodier, господибожемой.....
вас обчистить проще, чем у ребенка конфету отобрать!
какие слипы??? СДЕЛАЙТЕ АТОМАРНОСТЬ!
Только не на файлах, а то вы не учтете многопользовательский вариант,
да и там надежность я бы поставил под сомнение, скажем, если хакер одновременно отправит 100-200 запросов. подозреваю, пройдет больше одного.
dkameleon, СКАЖИТЕ МНЕ ПОЖАЛУЙСТА ПО РУССКИ
что значит АТОМАРНОСТЬ - это то что предлагает iopiop
создавать файл и с помощью его блокировать возможность обратиться к файлу обработчику? или что это вообще?
Только не на файлах, а то вы не учтете многопользовательский вариант,
да и там надежность я бы поставил под сомнение, скажем, если хакер одновременно отправит 100-200 запросов. подозреваю, пройдет больше одного.
Многопользовательский вариант можно, файл лочки должен лочить запросы юзера, а не всей системы.
Хакерство таким образом не пройдёт, всё равно один из запросов будет первым.
ТС у вас принципиально неправильно, отправлять бабло по запросу юзера - нельзя. По запросу юзера надо формировать заявку на выдачу бабла. А выдочу бабла долджен проводить независимый от юзера скрипт (по крону, повесьте раз в минуту, только тоже с лочкой, чтоб два скрипта выдачи нельзя было запустить). При каждой выдаче происходит проверка: достаточно ли средств на балансе, если достаточно - то выдавать, если нет - не выдавать; затем удалять заявку; переходить к следующей заявке.
грубо говоря
Я вас уверяю, что проблема в какой-то мелочи, особенно если всё это ещё и через ajax.
грубо говоря
Это неправильно. Можно мильён раз успеть получить первый запрос, до того как отработает Update.
Lock-файл значительно надёжней.
<?
$try=false;
while(!$try)
{
if(удалось заблокировать lock-файл)
{
$try=true;
}
else
{
$try=false;
sleep(); // не обязательно, в зависимости от ситуации
}
}
?>
В начало скрипта.
betam,
Вот набросал такой код и думаю, что он неправильный.
Ведь если хакер пошлет 100 запросов в секунду, то некоторые сработают потому, что
в WHILE проверятеся заблокирован ли файл, а он уже в условии блокируется и мой код начнет выполнятся.
<?php
session_start();
$login = $_SESSION['username'];
$fp = fopen("LOG_POST/".$login.".txt","a");
$try=false; while(!$try){
if( flock( $fp, LOCK_EX )) { /* уже блокирует файл в условии */
$try=true;
} else {
$try=false;
}
}
if($try){
/* мой скрипт обрабатывается */
if($payout > $userbalance){
flock($fp, LOCK_UN);
fclose($fp);
exit("Недостаточно средств!");
}
mysql_query( 'UPDATE table_users SET balance=balance-$payout WHERE login="'. $login.'"' );
flock($fp, LOCK_UN);
fclose($fp);
exit("Деньги выплачены!");
}
?>
Многопользовательский вариант можно, файл лочки должен лочить запросы юзера, а не всей системы.
Хакерство таким образом не пройдёт, всё равно один из запросов будет первым.
конечно можно. я переживаю, что если на это не указать конкретно, то автор темы этот момент не учтет :)