Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Что не так в этом коде?

Имя Фамилия Ученик (207), на голосовании 1 год назад
<?php
// Конечно не желательно все в кучу делать, лучше вот следующий код сделать в файле config.php
// Тут у нас идет подключение к базе данных, а данный подключения занесены в переменную $bsd

$bd_server = localhost'; $bd_login = '***'; $bd_pass = '***'; $bd_name = '***';
$bsd = mysqli_connect($bd_server, $bd_login, $bd_pass)
or die("<p>Ошибка подключения к базе данных!</p>");
mysqli_select_db($bsd, $bd_name)
or die("<p>Ошибка выбора базы данных!</p>");
mysqli_query($bsd, "SET NAMES utf8");


// END



$merchant_id = '123456'; // ID вашего магазина
$merchant_secret = 'CodeSecret'; // Наше секретное слово ( в 1 спойлере есть скрин где он находится )

function getIP() {
if(isset($_SERVER['HTTP_CF_CONNECTING_IP'])) return $_SERVER['HTTP_CF_CONNECTING_IP'];
if(isset($_SERVER['HTTP_X_REAL_IP'])) return $_SERVER['HTTP_X_REAL_IP'];
return $_SERVER['REMOTE_ADDR'];
}
if (!in_array(getIP(), array('136.243.38.147', '136.243.38.149', '136.243.38.150', '136.243.38.151', '136.243.38.189', '136.243.38.108'))) {
die("hacking attempt!"); // Своего рода небольшая проверка
}

$sign = md5($merchant_id.':'.$_REQUEST['AMOUNT'].':'.$merchant_secret.':'.$_REQUEST['MERCHANT_ORDER_ID']); // Авторизация в FK и шифрование

if ($sign != $_REQUEST['SIGN']) {
die('Wrong sign'); // Если авторизация в FK не прошла в логе будте "Wrong sign"
}

// Идет выполнения кода, если успешная оплата!
// $bsd - Данные от БД ( выше указывались данные от БД )
$pay_id = $_POST['intid'];
$amount = $_POST['AMOUNT']; // Сумма пополнения
$user_id = $_POST['MERCHANT_ORDER_ID']; // Номер заказа
$users = mysqli_query($bsd, "SELECT * FROM `users` WHERE id='$user_id'"); // Выборка всех пользователей нашего сайта из БД

if ( $users->num_rows == 1 ){ // Если значение получилось равно 1, то выполняется FULL код после пополнения :

// Добавление пользователю на баланс денежки
mysqli_query($bsd, "UPDATE `users` SET `balance` = `balance` + $amount WHERE id='$user_id'");

// Занесение в историю пополнений на сайте
mysqli_query($bsd, "INSERT INTO `deposits` (`pay_id`, `user_id`, `size`, `data`) VALUES ('$pay_id', '$user_id', '$amount', NOW());");

}else{

die("Пользователь в БД не найден");

}
die('YES');



почему когда я захожу по его адресу (на сайте), то открывается страница и написано "Попытка взлома"??
Голосование за лучший ответ
Пупок Осла Ученик (228) 1 год назад
Всë, переделывай
Имя ФамилияУченик (207) 1 год назад
На этом сайте остались нормальные люди которые не пишут бесполезную чепуху?
Имя ФамилияУченик (207) 1 год назад
Решил задачу по геометрии 7 класса?
Пупок Осла Ученик (228) А ты какашка постная
Пупок ОслаУченик (228) 1 год назад
Я в 8 лох
Андрей Lidell Профи (699) 1 год назад
В данном коде не хватает закрывающей одинарной кавычки в первой строке после слова localhost:

$bd_server = 'localhоst';

Также не понятно, что это за проверка IP-адресов и зачем она нужна: if (!in_array(getIP(), array('136.243.38.147', '136.243.38.149', '136.243.38.150', '136.243.38.151', '136.243.38.189', '136.243.38.108'))) {
die("hacking attempt!");
}

Может быть, стоит добавить комментарий для пояснения.

Также необходимо убедиться, что все обращения к $_REQUEST, $_POST и $_SERVER проверяются на наличие и правильность входных данных и защищены от возможных атак.
Имя ФамилияУченик (207) 1 год назад
Кавычка в коде есть, проверка айпи тоже не понимаю зачем тут...
Роман Данилов Мудрец (10915) 1 год назад
возможно, это стреляет die("hacking attempt!")
и браузер переводит автоматически на русский
Надо с помощью phpinfo(); посмотреть, какой адрес выдается, и добавить в список разрешенных. если делается локальная отладка пхп-скрипта, то могут быть внутренние адреса локалки и/или адрес петли (в списке видно, что указаны только интернетовские).
Похожие вопросы