Участник
Пользователь
- Сообщения
- 317
- Реакции
- 131
- Помог
- 4 раз(а)
Хочу сделать покупки привилегий работающую с бд csbans`a и сервисом freekassa
Все просто, думал я, ага Покидайте какие нибудь идеи, предложения, правки или то или сё или что-то еще или иное, ща взорвусь хелп
Сделал форму, обработчик формы, резаулт, от части все работает.
1. Сложно разобраться как сделать зависимые селекты. Выбрать сервер и в селекте ниже услуги именно для этого сервера
2. Мне кажется не правильно сделал обработчик , мб надо чтоб сразу с index.php перекидывало на кассу
3. Как передать флаги доступа, тут вообще жестко, думается надо выбирать услугу по id как то соединить с id выбранного сервера и что то дальше...
4. Что-то еще уже не помню, потом добавлю
fantom , oxoTHuk Архив со всем мб надо кому, а мне нужно поспать
Все просто, думал я, ага Покидайте какие нибудь идеи, предложения, правки или то или сё или что-то еще или иное, ща взорвусь хелп
Сделал форму, обработчик формы, резаулт, от части все работает.
1. Сложно разобраться как сделать зависимые селекты. Выбрать сервер и в селекте ниже услуги именно для этого сервера
2. Мне кажется не правильно сделал обработчик , мб надо чтоб сразу с index.php перекидывало на кассу
3. Как передать флаги доступа, тут вообще жестко, думается надо выбирать услугу по id как то соединить с id выбранного сервера и что то дальше...
4. Что-то еще уже не помню, потом добавлю
PHP:
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="description" content="">
<title>Покупка привилегий онлайн</title>
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css">
<!-- jQuery library -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<!-- Popper JS -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js"></script>
<!-- Latest compiled JavaScript -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js"></script>
<!-- Font Awesome Icons -->
<link rel="stylesheet" href="https://use.fontawesome.com/64ff6e1601.css">
<!-- Google Fonts -->
<link href="https://fonts.googleapis.com/css?family=Arimo" rel="stylesheet">
<!-- My CSS -->
<link rel="stylesheet" href="styles.css">
<!-- My JavaScript -->
<script src="my_js.js"></script>
<!-- PHP Includes -->
<?php
require_once ('cfg.php');
require_once ('database.php');
require_once ('mon/index.php');
?>
</head>
<body>
<div class="container">
<div class="content">
<h4>Покупка привилегий онлайн</h3>
<hr>
<div class="row">
<!-- start block -->
<div class="col-sm-6">
<form method="GET" action="test_action.php" autocomplete="off">
<div class="form-group">
<label><i class="fa fa-keyboard-o"></i> Сервера</label>
<select class="form-control form-control-sm" name="us_servername" id="us_servername" onchange="(this.value);" required>
<option value="0" disabled="disabled" selected="selected">Выбрать сервер</option>
<?= $form_server ;?>
</select>
</div>
<div class="form-group">
<label><i class="fa fa-star"></i> Привилегии</label>
<select class="form-control form-control-sm" name="oa" onchange='(this.value)' required>
<option value="" disabled="disabled" selected="selected" name="servertarif">Выбрать привилегию</option>
<?=$form_tarif;?>
</select>
</div>
<div class="form-group">
<label><i class="fa fa-calendar"></i> Срок услуги</label>
<select class="form-control form-control-sm" name="us_date" onchange='(this.value)' required>
<option value="" disabled="disabled" selected="selected" name="serverdate">Выбрать срок</option>
<?=$form_date;?>
</select>
</div>
<div class="form-group form-background">
<div class="row">
<div class="col">
<label><i class="fa fa-user"></i> Ник в игре</span></label>
<input type="text" name="us_nickname" placeholder="Ваш никнейм" class="form-control form-control-sm" maxlength="32" required>
</div>
<div class="col">
<label><i class="fa fa-lock"></i> Ваш пароль</label>
<div style="float:right;font-size:13px;color:#007bff;">
<i class="fa fa-eye" aria-hidden="true"></i>
<a href="#" id="s-h-pass"> Показать пароль</a>
</div>
<input id="password" type="password" name="us_password" placeholder="Придумайте пароль " pattern="^[\w]{4,32}$" class="form-control form-control-sm" required>
</div>
</div>
<small class="form-text text-muted">Ник и пароль вводить только на английском!</small>
</div>
<input class="btn btn-lg btn-block btn-dark" type="submit" value="Купить" name="submit">
</form>
</div>
<!-- end block -->
<!-- start block -->
<div class="col-sm-6">
<div class="card text-white bg-dark">
<div class="card-header"><?=$hostname;?></div>
<div class="card-body">
<div class="row">
<div class="col-md-4"><?=$mapimage;?></div>
<div class="col-md-8">
<b><i class="fa fa-location-arrow" style="width: 15px;"></i> Адрес:</b> <?=$serverip.':'.$serverport;?> <br>
<b><i class="fa fa-users" style="width: 15px;"></i> Игроки:</b> <?=$players.'/'.$maxplayers;?> <br>
<b><i class="fa fa-map-marker" style="width: 15px;"></i> Карта:</b> <?=$map;?> <br>
<a class="btn btn-warning btn-sm" href="steam://connect/<?=$serverip.':'.$serverport;?>">Подключиться через Steam</a>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- end block -->
</div>
</div>
</div>
</body>
</html>
PHP:
<?php
// freekassa
/*
$merchant_id = ''; // shop id
$secret_word = ''; // secret key
$get_order_id = $_GET['us_servername']; // order id
$get_order_amount = $_GET['oa']; // cost
$get_date = $_GET['us_date']; // date
$get_nick = $_GET['us_nickname']; // nickname
$get_pass = md5($_GET['us_password']); // password
$get_sign = md5($merchant_id.':'.$get_order_amount.':'.$secret_word.':'.$get_order_id); // hash
*/
// server status
$serverip = '46.174.52.237';
$serverport = '27015';
PHP:
<?php
require_once ('cfg.php');
//require_once ('classes.php');
$driver = 'mysql';
$host = '127.0.0.1'; // host
$db_name = 'csbans'; // data base
$db_user = ''; // user
$db_pass = ''; // password
$charset = 'utf8';
$options = [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION];
try {
$pdo = new PDO("$driver:host=$host;dbname=$db_name;charset=$charset", $db_user, $db_pass, $options);
} catch (PDOException $e) {
die('Не могу подключиться к базе данных :(');
}
# CREATE TABLE `csbans`.`amx_buy` ( `idt` INT(11) NOT NULL , `name` VARCHAR(60) NOT NULL , `time` VARCHAR(60) NOT NULL , `cost` VARCHAR(60) NOT NULL , `flags` VARCHAR(60) NOT NULL
// запросы к бд
$get_servers = $pdo->query("SELECT id, hostname, address, rcon FROM amx_serverinfo");
$get_shop = $pdo->query("SELECT * FROM amx_buy");
$get_admins = $pdo->query("SELECT username, password, access, flags, nickname, ashow, created, expired, days FROM amx_amxadmins");
// вывод 3 последних админов
//$get_lastadmins = $pdo->query("SELECT nickname, created, expired FROM amx_amxadmins ORDER BY id DESC LIMIT 0,3");
while ( $server = $get_servers->fetch(PDO::FETCH_ASSOC) ) {
$form_server .= '<option value="'.$server['id'].'" name="form_server" id="form_server">'.$server['hostname'].' ['.$server['address'].']</option>';
}
// вывод услуг и их даты
while ( $shop = $get_shop->fetch(PDO::FETCH_ASSOC) ) {
$form_tarif .= '<option value="'.$shop['cost'].'" name="form_tarif" id="form_tarif">'.$shop['name'].' - '.$shop['cost'].' руб. ['.$shop['flags'].'] </option>';
$form_date .= '<option value="'.$shop['time'].'" name="form_date" id="form_date">'.$shop['time'].' суток </option>';
}
// functions
// @author BLVCKMANIA.
$time = time();
/* Фильтация данных */
function fl($m){
$m = abs($m);
$m = intval($m);
return $m;
}
/* Работаем с базой данных */
function qry($sql, $params = array()) {
global $base;
$stmt = $base -> prepare($sql);
$stmt -> execute($params);
return $stmt;
}
/* Для обычного запроса */
function cnt($sql, $params = array()) {
global $base;
$stmt = $base -> prepare($sql);
$stmt -> execute($params);
$stmt = $stmt->rowCount();
return $stmt;
}
/* Для вывода запроса с подсчетом */
function obj($sql, $params = array()) {
global $base;
$stmt = $base -> prepare($sql);
$stmt -> execute($params);
$stmt = $stmt->FetchAll(PDO::FETCH_OBJ);
return $stmt;
}
/* Для вывода объектного массива */
function acc($sql, $params = array()) {
global $base;
$stmt = $base -> prepare($sql);
$stmt -> execute($params);
$stmt = $stmt->FetchAll(PDO::FETCH_ASSOC);
return $stmt;
}
/* Для вывода ассоциотивного массива */
function fch($sql, $params = array()) {
global $base;
$stmt = $base -> prepare($sql);
$stmt -> execute($params);
$stmt = $stmt->fetch();
return $stmt;
}
/* Для вывода массива */
function tm($time=NULL){
if ($time == NULL)$time = time();
$timep="".date("j M Y", $time)."";
$time_p[0]=date("j n Y", $time);
$time_p[1]=date("H:i", $time);
if ($time_p[0] == date("j n Y"))$timep = date("H:i", $time);
if ($time_p[0] == date("j n Y", time()-60*60*24))$timep = "$time_p[1]";
$timep=str_replace("Jan","01",$timep);
$timep=str_replace("Feb","02",$timep);
$timep=str_replace("Mar","03",$timep);
$timep=str_replace("May","04",$timep);
$timep=str_replace("Apr","05",$timep);
$timep=str_replace("Jun","06",$timep);
$timep=str_replace("Jul","07",$timep);
$timep=str_replace("Aug","08",$timep);
$timep=str_replace("Sep","09",$timep);
$timep=str_replace("Oct","10",$timep);
$timep=str_replace("Nov","11",$timep);
$timep=str_replace("Dec","12",$timep);
return $timep;
}
?>
JavaScript:
$( document ).ready(function() {
// показать и скрыть пароль в форме
$('#s-h-pass').click(function(){
var type = $('#password').attr('type') == "text" ? "password" : 'text',
c = $(this).text() == "Скрыть пароль" ? "Показать пароль" : "Скрыть пароль";
$(this).text(c);
$('#password').prop('type', type);
});
// выбор value в select`ах
/*
function function1337(val) {
//alert("value = " + val);
}
*/
// выбор сервера в селекте
$('#us_servername').on('change', function(e) {
$.get('/test1/test_action.php', {
serverid: $(this).val()
});
});
});
PHP:
<?php
$merchant_id = ''; // shop id
$secret_word = ''; // secret key
$get_order_id = $_GET['us_nickname']; // order id
$get_order_amount = $_GET['oa']; // cost
$get_date = $_GET['us_date']; // date
$get_nick = $_GET['us_nickname']; // nickname
$get_pass = md5($_GET['us_password']); // password
$get_sign = md5($merchant_id.':'.$get_order_amount.':'.$secret_word.':'.$get_order_id); // hash
$value = filter_input(INPUT_GET , 'serverid', FILTER_VALIDATE_INT);
var_dump($value);
?>
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="description" content="">
<title>Покупка привилегий онлайн</title>
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css">
<!-- jQuery library -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<!-- Popper JS -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js"></script>
<!-- Latest compiled JavaScript -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js"></script>
<!-- Font Awesome Icons -->
<link rel="stylesheet" href="https://use.fontawesome.com/64ff6e1601.css">
<!-- Google Fonts -->
<link href="https://fonts.googleapis.com/css?family=Arimo" rel="stylesheet">
<!-- My CSS -->
<link rel="stylesheet" href="styles.css">
<!-- My JavaScript -->
<script src="my_js.js"></script>
<!-- PHP Includes -->
<?php
require_once ('cfg.php');
require_once ('database.php');
require_once ('mon/index.php');
?>
</head>
<body>
<div class="container">
<div class="content">
<h4>Покупка привилегий онлайн</h3>
<hr>
<div class="row">
<!-- start block -->
<div class="col-sm-6">
<form method="GET" action="http://www.free-kassa.ru/merchant/cash.php">
<input type="hidden" name="s" value="<?=$get_sign;?>">
<input type="hidden" name="o" value="<?=$get_order_id;?>">
<input type="hidden" name="m" value="<?=$merchant_id;?>">
<input type="hidden" name="us_password" value="<?=$get_pass;?>">
<input type="hidden" name="oa" value="<?=$get_order_amount;?>">
<input type="hidden" name="us_date" value="<?=$get_date;?>">
<input type="hidden" name="us_nickname" value="<?=$get_nick;?>">
<input class="btn btn-lg btn-block btn-dark" type="submit" name="submit" value="Да все окей забирайте деньги (оплатить)">
</form>
<br>
<div class="card text-white bg-danger mb-3">
<div class="card-header">Важно</div>
<div class="card-body">
<p class="card-text">Вы соглашаетесь с <a href="#" target="_blank">правилами</a>, возврат средств будет невозможен, 11 сентября устроило правительство, а бога нет</p>
</div>
</div>
</div>
<!-- end block -->
<!-- start block -->
<div class="col-sm-6">
<div class="card text-white bg-dark">
<div class="card-header"><?=$hostname;?></div>
<div class="card-body">
<div class="row">
<div class="col-md-4"><?=$mapimage;?></div>
<div class="col-md-8">
<b><i class="fa fa-location-arrow" style="width: 15px;"></i> Адрес:</b> <?=$serverip.':'.$serverport;?> <br>
<b><i class="fa fa-users" style="width: 15px;"></i> Игроки:</b> <?=$players.'/'.$maxplayers;?> <br>
<b><i class="fa fa-map-marker" style="width: 15px;"></i> Карта:</b> <?=$map;?> <br>
<a class="btn btn-warning btn-sm" href="steam://connect/<?=$serverip.':'.$serverport;?>">Подключиться через Steam</a>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- end block -->
</div>
</div>
</div>
</body>
</html>
PHP:
<?php
$merchant_id = '';
$merchant_secret = ''; // maybe key #2
function getIP() {
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', '88.198.88.98'))) {
die("hacking attempt!");
}
*/
$sign = md5($merchant_id.':'.$_REQUEST['AMOUNT'].':'.$merchant_secret.':'.$_REQUEST['MERCHANT_ORDER_ID']);
if ($sign != $_REQUEST['SIGN']) {
die('wrong sign');
}
//Так же, рекомендуется добавить проверку на сумму платежа и не была ли эта заявка уже оплачена или отменена
//Оплата прошла успешно, можно проводить операцию.
// ====================================
// mysqli для тестов, нужно делать через pdo или redbean
$servername = "127.0.0.1";
$database = "csbans";
$username = "";
$password = "";
// Create connection
$conn = mysqli_connect($servername, $username, $password, $database);
// Check connection
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
$nick = $_REQUEST['us_nickname'];
$pass = $_REQUEST['us_password'];
$date = $_REQUEST['us_date'];
$sql = "INSERT INTO amx_amxadmins (nickname, password, days) VALUES ('{$nick}', '{$pass}', '{$date}')";
if (mysqli_query($conn, $sql)) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . mysqli_error($conn);
}
mysqli_close($conn);
// ====================================
die('YES');
?>
fantom , oxoTHuk
9 Янв 2019
В этой теме было размещено решение! Перейти к решению.
Последнее редактирование: