Исправляем баг с системой рефералов в MU Online

Автор M1sTeRIO, 2013 Июль 19, 18:15

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Ключевые слова [SEO] mu onlineисправлениебагдюпсистема рефералов

M1sTeRIO

Привет , у меня такая проблема , когда берешь бонус на Referral и нажимаешь на F5 много раз, делается Dupe на кредиты... помогите исправить ошибку  (think)


<?php

if(!defined('DEW_Engine'))Exit;
if (
$_SESSION['DEW_UserName'] == true AND $IsOnline == '0') {

if (isset(
$_POST['get_reward'])) {
$reward_type $_POST['reward_type'];
$reward_count $_POST['get_reward'];

if (
$reward_count 0) {
$credit_now mssql_fetch_row(mssql_query("SELECT Credits FROM MEMB_CREDITS WHERE memb___id = '$username'"));
$reward_credits $reward_count $Ref_sys['RefererCredReward'];

$new_credit $credit_now[0] + $reward_credits;
$new_credit_q "UPDATE MEMB_CREDITS SET Credits = '$new_credit' WHERE memb___id = '$username'";

mssql_query($new_credit_q);
$acc_chars_q mssql_query("SELECT Name FROM Character WHERE AccountID = '$username'");
for (
$i 0$i mssql_num_rows($acc_chars_q); $i++) {
$char_q mssql_fetch_row($acc_chars_q);
$ref_query mssql_query("SELECT * FROM Sky_Referals WHERE Who_Ref = '$char_q[0]'");
for (
$j 0$j mssql_num_rows($ref_query); $j++) {
$ref_acc_q mssql_fetch_row($ref_query);
$ref_chars mssql_query("SELECT ".$Reset['column'].", Name FROM Character WHERE AccountID = '$ref_acc_q[0]'");
for (
$k 0$k mssql_num_rows($ref_chars); $k++) {
$char_info mssql_fetch_row($ref_chars);
if (
$char_info[0] >= $Ref_sys['RRNeedToReward']) {
$reward_check mssql_num_rows(mssql_query("SELECT Referal FROM Sky_referals_Reward WHERE Referal = '$char_info[1]'"));
if (
$reward_check 1) {
mssql_query("INSERT INTO Sky_Referals_Reward (Referer, Referal) VALUES ('$char_q[0]','$char_info[1]')");
}
}
}
}
}
echo    
DEW_Message('ok''Вы успешно получили награду!');
} else {
echo    
DEW_Message('error','У вас нету рефералов, за которых можно получить награду!');
}
}
$referal_link $Web['Adress'];
$referal_link .= $URL_class->DEW_Crypt('Register/'.$char_name);
$strlen strlen($referal_link);
$acc_chars_q mssql_query("SELECT Name FROM Character WHERE AccountID = '$username'");
$reward_count 0;
$total_ref 0;
// soberaem referalov s kazdogo chara
for ($i 0$i mssql_num_rows($acc_chars_q); $i++) {
$char_q mssql_fetch_row($acc_chars_q);
$ref_query mssql_query("SELECT * FROM Sky_Referals WHERE Who_Ref = '$char_q[0]'");
// prohodimsja po kazdomu referalnomu acc
for ($j 0$j mssql_num_rows($ref_query); $j++) {
$ref_acc_q mssql_fetch_row($ref_query);
$ref_chars mssql_query("SELECT ".$Reset['column'].", Name FROM Character WHERE AccountID = '$ref_acc_q[0]'");
// iwem 4arov, za kotorih uze mozno vidavatj priz
for ($k 0$k mssql_num_rows($ref_chars); $k++) {
$char_info mssql_fetch_row($ref_chars);
if (
$char_info[0] >= $Ref_sys['RRNeedToReward']) {
$reward_check mssql_num_rows(mssql_query("SELECT Referal FROM Sky_referals_Reward WHERE Referal = '$char_info[1]'"));
if (
$reward_check 1) {
$reward_count++;
}
}
$total_ref++;
}
}
}
$reward_cred $Ref_sys['RefererCredReward'] * $reward_count;

?>

<form method='post' action='' name = 'start_reward'>
<table>
<tr>
<td>Ваша реферальная ссылка:</td>
<td><input type="text" class="text-form" value="<? echo $referal_link;?>" size="<? echo $strlen;?>" maxLength="<? echo $strlen;?>" readonly></center></td>
</tr>
<tr><td>Всего рефералов:</td><td><? echo $total_ref;?></td></tr>
<tr><td>>Можно получить награду за</td><td><? echo $reward_count;?></td></tr>
<tr><td>Награда:</td><td><? echo $reward_cred; ?></td></tr>

<tr>
<td align="center">
<input type='hidden' name='get_reward' value='<? echo $reward_count; ?>'>
<input type='button' onclick="this.disabled=true; this.value='Загрузка...'; start_reward.submit();" value='Получить награду>' >
</td>
</tr>
</table>
</form>
<?

}
else {
if ($IsOnline == '1') { echo DEW_Message('error','Сначало выйдите из игры!'); }
if ($_SESSION['DEW_UserName'] != true) {
echo    DEW_Message('error','Пожалуйста вначале войдите на сайт!'); }
}
?>

Profesor08

Имеется данный модуль без дюпов и прочего.

M1sTeRIO

Спасибо кэп, очень помог

Белый

Цитата: M1sTeRIO от 2013 Июль 19, 17:55  Спасибо кэп, очень помог
Он намекнул, плати бабло - получишь модуль.

Sky_

Ну вообще ****ец, модули в паблик мои повыкладывали, ну это пох, я от му отошел, так ладно бы нормальные выложили, так еще по пути выкладывания испортили, а сейчас пачками в скайп стучатся типа "давай исправляй, ты мне должен" D
Ну писдец товарищи, у меня нет слов  

Profesor08

#5
Цитата: Sky_ от 2013 Июль 22, 11:27  Ну вообще ****ец, модули в паблик мои повыкладывали, ну это пох, я от му отошел, так ладно бы нормальные выложили, так еще по пути выкладывания испортили, а сейчас пачками в скайп стучатся типа "давай исправляй, ты мне должен" :DD
Ну писдец товарищи, у меня нет слов  :facepalm:
Ну на сколько я помню, твои модули работали верно. Не работали только в случае, если что-то неверно указано пользователем, например регистр букв колонки ресетов.

Sky_

Цитата: Profesor08 от 2013 Июль 22, 15:18  Ну на сколько я помню, твои модули работали верно. Не работали только в случае, если что-то неверно указано пользователем, например регистр букв колонки ресетов.
Ну да, естестно, что работали верно, если что-то писать то писать нормально, а не говнокод, на исправление которого потом еще 100500 часов времени тратить.
А от криворукости админов, увы полностью модули не защитишь )

epmak

try/catch + обфускация. от простых админов спасет

Profesor08

Цитата: epmak от 2013 Июль 22, 18:04  try/catch + обфускация. от простых админов спасет
+1
еще и настроек накидать на все случаи.

Похожие темы (5)