Здравствуйте, при успешном платеже не начисляются "рефские",т.е определенный процент от пополнения, не могу понять где ошибка, помогите пожалуйста. Вот код обработчика: Код (PHP): <? include_once 'data/connect.php'; // Соединение с базой данных include_once 'data/config.php'; // Подключаем настройки if (isset($_POST["m_operation_id"]) && isset($_POST["m_sign"])) { $m_key = $payeerkey; $arHash = array($_POST['m_operation_id'], $_POST['m_operation_ps'], $_POST['m_operation_date'], $_POST['m_operation_pay_date'], $_POST['m_shop'], $_POST['m_orderid'], $_POST['m_amount'], $_POST['m_curr'], $_POST['m_desc'], $_POST['m_status'], $m_key); $sign_hash = strtoupper(hash('sha256', implode(':', $arHash))); if ($_POST['m_sign'] == $sign_hash && $_POST['m_status'] == 'success') { mysql_query("UPDATE inserts SET status = 1 WHERE id = '".$_POST['m_orderid']."'"); $userss = mysql_query("SELECT * FROM inserts WHERE id = '".$_POST['m_orderid']."'") or die(mysql_error()); $datauser = mysql_fetch_assoc($userss); mysql_query("UPDATE users SET balance = balance + '".$_POST['m_amount']."' WHERE id = '".$datauser['userid']."' LIMIT 1"); mysql_query("UPDATE users SET inserts = inserts + '".$_POST['m_amount']."' WHERE id = '".$datauser['userid']."' LIMIT 1"); mysql_query("UPDATE stats SET inserts = inserts + '".$_POST['m_amount']."' WHERE id = 1"); #Зачисляем рефские $ref = $datauser['ref_id']; $sql = mysql_query("SELECT * FROM users WHERE id = '$ref'"); $qq = mysql_fetch_array($sql); $ref_sum = $_POST['m_amount'] / 100 * $ref_perc; mysql_query("UPDATE users SET balance = balance + '$ref_sum' WHERE id = '$ref' LIMIT 1"); mysql_query("UPDATE users SET sum_ref = sum_ref + '$ref_sum' WHERE id = '$ref' LIMIT 1"); echo $_POST['m_orderid'].'|success'; exit; } echo $_POST['m_orderid'].'|error'; } ?> PHP, JavaScript, SQL и другой код пишите внутри тегов Код ( (Unknown Language)): [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
Этого мало, нужно отладить скрипт, перепроверить вручную каждый sql запрос и отрабатывает ли сам скрипт в нужных местах как и задумано. Можешь начать с проверки if Код (PHP): ($_POST['m_sign'] == $sign_hash && $_POST['m_status'] == 'success') выполняется ли код в этом if. Потом посмотреть какие sql запросы генерируються Код (PHP): $sql = "UPDATE inserts SET status = 1 WHERE id = '".$_POST['m_orderid']."'"; echo $sql; //узнаём какой был сгенерированный запрос mysql_query($sql); Запросы можно проверить в PHpMyAdmin. Инструкции по отладке: http://phpfaq.ru/debug https://netbeans.org/kb/docs/php/debugging_ru.html Лучше заменить функцию mysql_ (устарела) на PDO https://secure.php.net/manual/ru/book.mysqli.php Защита от SQL-injection http://phpfaq.ru/tech/safety#sql чтобы не смогли накрутить денег сколько хотят.
Я вижу, что в переменной $datauser хранится выборка из таблицы inserts. А в переменную $ref ты пытаешься сохранить айдишник рефа из предыдущей выборки, потому что я не уверен, что в таблице inserts у тебя хранятся id рефов. Не хватает двух выборок: 1. Нужен id пользователя, который пополнил счет (данные, которые пошли в таблицу inserts) 2. По найденному id пользователя ищем в другой таблице его рефов.