Андрей 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 проверяются на наличие и правильность входных данных и защищены от возможных атак.
Роман Данилов
Мудрец
(10915)
1 год назад
возможно, это стреляет die("hacking attempt!")
и браузер переводит автоматически на русский
Надо с помощью phpinfo(); посмотреть, какой адрес выдается, и добавить в список разрешенных. если делается локальная отладка пхп-скрипта, то могут быть внутренние адреса локалки и/или адрес петли (в списке видно, что указаны только интернетовские).
// Конечно не желательно все в кучу делать, лучше вот следующий код сделать в файле 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');
почему когда я захожу по его адресу (на сайте), то открывается страница и написано "Попытка взлома"??