Помогу по Фруктовой Ферме

APTEMOH

Участник
Нужен совет.Каким образом,можно защитить сайт от ботов?
Каких именно? Поисковых? (индексация)
Или может пароль подбирают, в авторизацию стучаться. Можно блокировку по IP поставить, можно после трех неудач блок входа на 15 минут, можно весь сайт скрыть. Да что угодно, на что вашей фантазии хватит.
 

taburetus

Участник
Такая проблема. Есть ферма с валютой в рублях. Поставил выплаты полуавтомат. Перевел в рубли. Теперь при выплатах 1005.84 на вывод, а получаете 1005. Всегда округляет до целого числа. Копеек нет. Как исправить?.
<div class="s-bk-lf">
<div class="acc-title">Заказ выплаты</div>
</div>
<script type="text/javascript" src="/js/functions.js"></script>
<div class="silver-bk">
<BR />
<?PHP
$_OPTIMIZATION["title"] = "Аккаунт - Заказ выплаты";
$usid = $_SESSION["user_id"];
$usname = $_SESSION["user"];

$db->Query("SELECT * FROM db_users_b WHERE id = '$usid' LIMIT 1");
$user_data = $db->FetchArray();

$db->Query("SELECT * FROM db_config WHERE id = '1' LIMIT 1");
$sonfig_site = $db->FetchArray();

$status_array = array( 0 => "В обработке", 1 => "Выплачивается", 2 => "Отменена", 3 => "Выплачено");

# Минималка серебром!
$minPay = 1;

?>
<b>Выплаты осуществляются в полуавтоматическом режиме и только на платежную систему PAYEER! Процент при выводе составляет 0%</b> <BR /><BR />
<b>Из платежной системы Payeer Вы можете вывести свои средства в автоматическом режиме на все известные платежные системы и международные банки.</b><BR /><BR />


<center><b>Заказ выплаты:</b></center><BR />
<?PHP

function CheckPurse()
{
global $db;
global $usid;
$db->Query("SELECT * FROM `db_payment` WHERE `ps`='py' AND `user_id`='$usid'");
$v = $db->FetchArray();
if (empty($v["id"]))
return FALSE;
else
return $v["purse"];
}

function ViewPurse($purse){

if( substr($purse,0,1) != "P" ) return false;
if( !ereg("^[0-9]{7,11}$", substr($purse,1)) ) return false;
return $purse;
}

# Заносим выплату
if(isset($_POST["swap"])){

if(empty($user_data['purse'])) {
$purse = ViewPurse($_POST["purse"]);
}
else
{
$purse = $user_data['purse'];
}
$sum = intval($_POST["sum"]);
$val = "RUB";
if($user_data['insert_sum'] > 1) {
if($purse !== false){

if($sum >= $minPay){

if($sum <= $user_data["money_p"]){

# Проверяем на существующие заявки
$db->Query("SELECT COUNT(*) FROM db_payment WHERE user_id = '$usid' AND (status = '0' OR status = '1')");
if($db->FetchRow() == 0){


### Делаем выплату ###
$payeer = new rfs_payeer($config->AccountNumber, $config->apiId, $config->apiKey);
if ($payeer->isAuth())
{


$arBalance = $payeer->getBalance();
//echo '<pre>'.print_r($arBalance, true).'</pre>';
if($arBalance["auth_error"] == 0)
{

$sum_pay = round( ($sum / $sonfig_site["ser_per_wmz"]), 2);
//echo $sum_pay;
$balance = $arBalance['balance']['RUB']['DOSTUPNO'];
//print_r($arBalance);
if( ($balance) >= ($sum_pay)){

# Снимаем с пользователя
$db->Query("UPDATE db_users_b SET money_p = money_p - '$sum' WHERE id = '$usid'");

# Вставляем запись в выплаты
$da = time();
$dd = $da + 60*60*24*15;

$db->Query("INSERT INTO db_payment (user, user_id, purse, sum, valuta, serebro, payment_id, date_add, status)
VALUES ('$usname','$usid','$purse','$sum_pay','RUB', '$sum','0','$da', '0')");
$db->Query("SELECT * FROM db_payment WHERE user_id = '$usid' AND date_add = $da");
$tmpresid = $db->FetchArray();
$tmpresid = $tmpresid['id'];
$db->Query("INSERT INTO db_request_payment (user, user_id, purse, sum, status, payment_id, date)
VALUES ('$usname','$usid','$purse','$sum_pay','0','$tmpresid','$da')");
if(empty($user_data['purse'])) {
$db->Query("UPDATE db_users_b SET purse = '$purse' WHERE id = '$usid'");
}
$db->Query("UPDATE db_users_b SET payment_sum = payment_sum + '$sum_pay' WHERE id = '$usid'");
$db->Query("UPDATE db_stats SET all_payments = all_payments + '$sum_pay' WHERE id = '1'");

echo "<center><font color = 'green'><b>Заявка отправлена!</b></font></center><BR />";



}else echo "<center><font color = 'red'><b>Внутреняя ошибка - сообщите о ней администратору! #1</b></font></center><BR />";

}else echo "<center><font color = 'red'><b>Не удалось выплатить! Попробуйте позже #2</b></font></center><BR />";

}else echo "<center><font color = 'red'><b>Не удалось выплатить! Попробуйте позже #3</b></font></center><BR />";


}else echo "<center><font color = 'red'><b>У вас имеются необработанные заявки. Дождитесь их выполнения. #4</b></font></center><BR />";


}else echo "<center><font color = 'red'><b>Вы указали больше, чем имеется на вашем счету #5</b></font></center><BR />";

}else echo "<center><b><font color = 'red'>Минимальная сумма для выплаты составляет {$minPay} серебра! #6</font></b></center><BR />";

}else echo "<center><b><font color = 'red'>Кошелек Payeer указан неверно! Смотрите образец! #7</font></b></center><BR />";
}else echo "<center><b><font color = 'red'>Вы не можете вывести деньги!</font></b></center><BR />";
}
?>

<form action="" method="post">
<table width="99%" border="0" align="center">
<tr>
<td><font color="#000;">Введите кошелек Payeer [Пример: P1052244]</font>: </td>
<td>
<?php
if(!empty($user_data['purse'])) {
echo '<input type="text" name="purse" size="15" value="'.$user_data['purse'].'" disabled="disabled"/>';
}
else
{
echo '<input type="text" name="purse" size="15"/>';
}
?>

</td>
</tr>
<tr>
<td><font color="#000;">Отдаете серебро для вывода</font> [Мин. 1]<font color="#000;">:</font> </td>
<td><input type="text" name="sum" id="sum" value="<?=round($user_data["money_p"],2)*100; ?>" size="15" onkeyup="PaymentSum();" /></td>
</tr>
<tr>
<td><font color="#000;">Получаете <span id="res_val"></span></font><font color="#000;">:</font> </td>
<td>
<input type="text" name="res" id="res_sum" value="0" size="15" disabled="disabled"/>
<input type="hidden" name="per" id="RUB" value="<?=$sonfig_site["ser_per_wmz"]; ?>" disabled="disabled"/>
<input type="hidden" name="per" id="min_sum_RUB" value="0.01" disabled="disabled"/>
<input type="hidden" name="val_type" id="val_type" value="RUB" />
</td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" name="swap" value="Заказать выплату" style="height: 30px; margin-top:10px;" /></td>
</tr>
</table>
</form>
<script language="javascript">PaymentSum(); SetVal();</script>



<table cellpadding='3' cellspacing='0' border='0' bordercolor='#336633' align='center' width="99%">
<tr>
<td colspan="5" align="center"><h4>Последние 10 выплат</h4></td>
</tr>
<tr>
<td align="center" class="m-tb">Серебро</td>
<td align="center" class="m-tb">Получаете</td>
<td align="center" class="m-tb">Кошелек</td>
<td align="center" class="m-tb">Дата</td>
<td align="center" class="m-tb">Статус</td>
</tr>
<?PHP

$db->Query("SELECT * FROM db_payment WHERE user_id = '$usid' ORDER BY id DESC LIMIT 20");

if($db->NumRows() > 0){

while($ref = $db->FetchArray()){

?>
<tr class="htt">
<td align="center"><?=$ref["serebro"]; ?></td>
<td align="center"><?=sprintf("%.2f",$ref["sum"] - $ref["comission"]); ?> <?=$ref["valuta"]; ?></td>
<td align="center"><?=$ref["purse"]; ?></td>
<td align="center"><?=date("d.m.Y",$ref["date_add"]); ?></td>
<td align="center"><?=$status_array[$ref["status"]]; ?></td>
</tr>
<?PHP

}

}else echo '<tr><td align="center" colspan="5">Нет записей</td></tr>'

?>


</table><div class="clr"></div>
</div>
 

jameson

Администратор
Посмотри в коде, где-то стоит оператор округления round, он и округляет скорее всего.
Примерно такая строчка является причиной:
PHP:
$sum_pay = round(($sum / $sonfig_site["ser_per_wmr"]), 2);
 

taburetus

Участник
<td><font color="#000;">Получаете <span id="res_val"></span></font><font color="#000;">:</font> </td>
<td>
<input type="text" name="res" id="res_sum" value="0" size="15" disabled="disabled"/>
<input type="hidden" name="per" id="RUB" value="<?=$sonfig_site["ser_per_wmz"]; ?>" disabled="disabled"/>
<input type="hidden" name="per" id="min_sum_RUB" value="0.01" disabled="disabled"/>
<input type="hidden" name="val_type" id="val_type" value="RUB" />

тут нет. может это заменить можно? <?=$sonfig_site["ser_per_wmz"]; ?>
 

jameson

Администратор
тут нет. может это заменить можно? <?=$sonfig_site["ser_per_wmz"]; ?>
Это должно быть не именно там где форма, а где обработчик платежа. Поищите round поиском по всем файлам относящимся к платежам, включая те что в админке.
 

taburetus

Участник
$sum_pay = round(($sum / $sonfig_site["ser_per_wmr"]), 2);
это есть в payment. round убирал тоже самое
 

jameson

Администратор
Скинь файл тут уже ерунда какая то, тут ты пишешь
$sum_pay = round(($sum / $sonfig_site["ser_per_wmr"]), 2);
а до этого писал
<?=$sonfig_site["ser_per_wmz"]; ?> в коде.
 

jameson

Администратор
как вариант в поле ввода суммы можно поставить округление при заказе платежа
примерно так:
<input type="text" name="sum" id="sum"
value="<?= floor($user_data['money_p']) ?>"
size="15"
onkeyup="PaymentSum();"/>
 

jameson

Администратор
Меняешь это:
PHP:
    <td><input type="text" name="sum" id="sum" value="<?=round($user_data["money_p"],2); ?>" size="15" onkeyup="PaymentSum();" /></td>
на:
PHP:
    <td><input type="text" name="sum" id="sum" value="<?=$user_data["money_p"]; ?>" size="15" onkeyup="PaymentSum();" /></td>
а еще:
PHP:
    $sum_pay = round( ($sum / $sonfig_site["ser_per_wmz"]), 2);
на:
PHP:
    $sum_pay = $sum / $sonfig_site["ser_per_wmz"];
 

jameson

Администратор
Ставит где в админке где полуавтомат или где? Что в базу заносится смотрел?
 

taburetus

Участник
при выводе указываю сумму 10.40 (примерно) на вывод пишет 10. и выводит 10.
 

jameson

Администратор
В базе еще раз спрашиваю в таблицу payments заносится какое значение?

763568.png
 
Верх