- Баллы
- 48
DELETE
Сервер bukkit 1.5.2 Сейчас столкнулся с данной проблемой, а именно авторизацией сайта с сервером через клиент.
Вообщем при входе через клиент из БД сайта вытаскиваем переменные логина и пароля, и входим в лаунчер. Но не все так просто ведь дальше необходимо сделать вход на сам сервер, а именно проверить есть ли такой ник в БД и впустить игрока, в моем случае пишет Bad Login. Значит из БД не вытаскивает переменную логин и все остальные. При детальном поиске попал на тему где писали об авторизации, но ничего путного не нашел, т.к. настройки файлов, которые лежат на сайте , а именно checkserver.php auth.php connect.php functions.php joinserver.php попросту нет.
Внизу выложу эти файлы + в настройке сервера при замене ссылки mojang на свою ничего не изменилось, проблема осталась. Прочитав несколько тем нашел php файлы которые проверяют авторизацию не в клиенте, а через сайт тем самым упрощают поиск ошибки, это index1.php index2.php index3.php попробовав сделать как в инструкции не вышло, на 2 и 3 заходит но на 1 пустой экран(белый).
Путь к этим файлам
Корневой каталог где лежат все php файлы
http://мой_домен/site(slaviatura)/...
БазаДанных: userName - логин
userPass -пароль
session - так и не разобрался
server - так и не понял что означает
Попрошу не давать ссылки на туториалы и иную чушь, без настройки данных фалов *.php . Если есть знающие просьба связаться в skype - yaro-man007 с удовольствием поддержу материально такого "умничку", но не нужно стучаться и писать "гАни дИньги и пАмАгу". Благодарю всех кто просмотрел тему и дал дельный совет.
Исходники:
auth.php
connect.php
functions.php
checkserver.php
joinserver.php
index1.php
index2.php
index3.php
Сервер bukkit 1.5.2
Вообщем при входе через клиент из БД сайта вытаскиваем переменные логина и пароля, и входим в лаунчер. Но не все так просто ведь дальше необходимо сделать вход на сам сервер, а именно проверить есть ли такой ник в БД и впустить игрока, в моем случае пишет Bad Login. Значит из БД не вытаскивает переменную логин и все остальные. При детальном поиске попал на тему где писали об авторизации, но ничего путного не нашел, т.к. настройки файлов, которые лежат на сайте , а именно checkserver.php auth.php connect.php functions.php joinserver.php попросту нет.
Внизу выложу эти файлы + в настройке сервера при замене ссылки mojang на свою ничего не изменилось, проблема осталась. Прочитав несколько тем нашел php файлы которые проверяют авторизацию не в клиенте, а через сайт тем самым упрощают поиск ошибки, это index1.php index2.php index3.php попробовав сделать как в инструкции не вышло, на 2 и 3 заходит но на 1 пустой экран(белый).
Путь к этим файлам
Корневой каталог где лежат все php файлы
http://мой_домен/site(slaviatura)/...
БазаДанных: userName - логин
userPass -пароль
session - так и не разобрался
server - так и не понял что означает
Попрошу не давать ссылки на туториалы и иную чушь, без настройки данных фалов *.php . Если есть знающие просьба связаться в skype - yaro-man007 с удовольствием поддержу материально такого "умничку", но не нужно стучаться и писать "гАни дИньги и пАмАгу". Благодарю всех кто просмотрел тему и дал дельный совет.
Исходники:
auth.php
<?php
define('INCLUDE_CHECK',true);
require_once 'functions.php';
include ("connect.php");
$login=$_POST['userName'];
$password=$_POST['userPass'];
$ver=$_POST['version'];
if(getGameInfo('launcher') == $ver){
$result = mysql_query("SELECT $db_columnPass FROM $db_table WHERE $db_columnUser='$login'") or die ("Запрос к базе завершился ошибкой."); //извлекаем из базы все данные о пользователе с введенным логином
$myrow = mysql_fetch_array($result);
$realPass = $myrow[$db_columnPass];
if (checkPass($realPass,$password))
{
$sessid = generateSessionId();
$gamebuild=getGameInfo('build');
mysql_query("UPDATE $db_table SET $db_columnSesId='$sessid' WHERE $db_columnUser = '$login'") or die ("Запрос к базе завершился ошибкой.");
$dlticket = md5($login);
echo $gamebuild.':'.$dlticket.':'.$login.':'.$sessid.':';
}
else {
echo "Bad login";
}
}
else{
echo 'Old version';
}
?>
define('INCLUDE_CHECK',true);
require_once 'functions.php';
include ("connect.php");
$login=$_POST['userName'];
$password=$_POST['userPass'];
$ver=$_POST['version'];
if(getGameInfo('launcher') == $ver){
$result = mysql_query("SELECT $db_columnPass FROM $db_table WHERE $db_columnUser='$login'") or die ("Запрос к базе завершился ошибкой."); //извлекаем из базы все данные о пользователе с введенным логином
$myrow = mysql_fetch_array($result);
$realPass = $myrow[$db_columnPass];
if (checkPass($realPass,$password))
{
$sessid = generateSessionId();
$gamebuild=getGameInfo('build');
mysql_query("UPDATE $db_table SET $db_columnSesId='$sessid' WHERE $db_columnUser = '$login'") or die ("Запрос к базе завершился ошибкой.");
$dlticket = md5($login);
echo $gamebuild.':'.$dlticket.':'.$login.':'.$sessid.':';
}
else {
echo "Bad login";
}
}
else{
echo 'Old version';
}
?>
connect.php
<?php
if(!defined('INCLUDE_CHECK')) die("You don't have permissions to run this");
$crypt = 'hash_dle';
$db_host = 'host';
$db_port = '3306';
$db_user = 'user';
$db_pass = 'password';
$db_database = 'data';
$db_table = 'userlist';
$db_columnId = 'id';
$db_columnUser = 'userName';
$db_columnPass = 'userPass';
$db_tableOther = 'xf_user_authenticate';
$db_columnSesId = 'session';
$db_columnServer = 'server';
$db_columnSalt = 'members_pass_salt';
$masterversion = 'MixGame MK6';
$protectionKey = 'fgsoepr8y5y9w5hgsrgopsh-aghp09rhy0';
$db_columnMoney = 'balance';
$db_tableMoneyKeys = 'sashok724_launcher_keys';
$db_columnKey = 'key';
$db_columnAmount = 'amount';
$usePersonal = true;
$canUploadSkin = false;
$canUploadCloak = false;
$canBuyVip = false;
$canBuyPremium = false;
$canBuyUnban = false;
$canActivateVaucher = false;
$canExchangeMoney = false;
$canUseJobs = true;
$cloakPrice = 0;
$vipPrice = 100;
$premiumPrice = 150;
$unbanPrice = 150;
$initialIconMoney = 35;
$exchangeRate = 200;
$link = mysql_connect($db_host.':'.$db_port,$db_user,$db_pass) or die(mysql_error());
mysql_select_db($db_database,$link) or die(mysql_error());
mysql_query("SET names UTF8");
?>
if(!defined('INCLUDE_CHECK')) die("You don't have permissions to run this");
$crypt = 'hash_dle';
$db_host = '
$db_port = '
$db_user = '
$db_pass = '
$db_database = '
$db_table = 'userlist';
$db_columnId = 'id';
$db_columnUser = 'userName';
$db_columnPass = 'userPass';
$db_tableOther = 'xf_user_authenticate';
$db_columnSesId = 'session';
$db_columnServer = 'server';
$db_columnSalt = 'members_pass_salt';
$masterversion = 'MixGame MK6';
$protectionKey = 'fgsoepr8y5y9w5hgsrgopsh-aghp09rhy0';
$db_columnMoney = 'balance';
$db_tableMoneyKeys = 'sashok724_launcher_keys';
$db_columnKey = 'key';
$db_columnAmount = 'amount';
$usePersonal = true;
$canUploadSkin = false;
$canUploadCloak = false;
$canBuyVip = false;
$canBuyPremium = false;
$canBuyUnban = false;
$canActivateVaucher = false;
$canExchangeMoney = false;
$canUseJobs = true;
$cloakPrice = 0;
$vipPrice = 100;
$premiumPrice = 150;
$unbanPrice = 150;
$initialIconMoney = 35;
$exchangeRate = 200;
$link = mysql_connect($db_host.':'.$db_port,$db_user,$db_pass) or die(mysql_error());
mysql_select_db($db_database,$link) or die(mysql_error());
mysql_query("SET names UTF8");
?>
functions.php
<?php
if(!defined('INCLUDE_CHECK')) die('У вас нет прав на выполнение данного файла!');
function generateSessionId(){
// generate rand num
srand(time());
$randNum = rand(1000000000, 2147483647).rand(1000000000, 2147483647).rand(0,9);
return $randNum;
}
function getGameInfo($type){
include ("connect.php");
switch($type){
case 'build':
$query = mysql_query("SELECT * FROM $db_GameDatatable WHERE $db_Propertycolumn = 'latest-game-build'") or die ("Запрос к базе завершился ошибкой.");
$resource = mysql_fetch_array($query);
return $resource[$db_Valuecolumn];
break;
case 'launcher':
$query = mysql_query("SELECT * FROM $db_GameDatatable WHERE $db_Propertycolumn = 'launcher-version'") or die ("Запрос к базе завершился ошибкой.");
$resource = mysql_fetch_array($query);
return $resource[$db_Valuecolumn];
break;
}
}
function checkPass($realPass,$password){
if (strlen($realPass) == 32)
{
$cp = md5($password);
}
else {
if(strpos($realPass,'$SHA$') !== false)
{
$ar = preg_split("/\\$/",$realPass);
$salt = $ar[2];
$cp = '$SHA$'.$salt.'$'.hash('sha256',hash('sha256',$password).$salt);
}
else
{
$saltPos = (strlen($password) >= strlen($realPass) ? strlen($realPass) : strlen($password));
$salt = substr($realPass, $saltPos, 12);
$hash = hash('whirlpool', $salt . $password);
$cp = substr($hash, 0, $saltPos) . $salt . substr($hash, $saltPos);
}
}
if ($realPass==$cp) {
return true;
}
else {
return false;
}
}
?>
if(!defined('INCLUDE_CHECK')) die('У вас нет прав на выполнение данного файла!');
function generateSessionId(){
// generate rand num
srand(time());
$randNum = rand(1000000000, 2147483647).rand(1000000000, 2147483647).rand(0,9);
return $randNum;
}
function getGameInfo($type){
include ("connect.php");
switch($type){
case 'build':
$query = mysql_query("SELECT * FROM $db_GameDatatable WHERE $db_Propertycolumn = 'latest-game-build'") or die ("Запрос к базе завершился ошибкой.");
$resource = mysql_fetch_array($query);
return $resource[$db_Valuecolumn];
break;
case 'launcher':
$query = mysql_query("SELECT * FROM $db_GameDatatable WHERE $db_Propertycolumn = 'launcher-version'") or die ("Запрос к базе завершился ошибкой.");
$resource = mysql_fetch_array($query);
return $resource[$db_Valuecolumn];
break;
}
}
function checkPass($realPass,$password){
if (strlen($realPass) == 32)
{
$cp = md5($password);
}
else {
if(strpos($realPass,'$SHA$') !== false)
{
$ar = preg_split("/\\$/",$realPass);
$salt = $ar[2];
$cp = '$SHA$'.$salt.'$'.hash('sha256',hash('sha256',$password).$salt);
}
else
{
$saltPos = (strlen($password) >= strlen($realPass) ? strlen($realPass) : strlen($password));
$salt = substr($realPass, $saltPos, 12);
$hash = hash('whirlpool', $salt . $password);
$cp = substr($hash, 0, $saltPos) . $salt . substr($hash, $saltPos);
}
}
if ($realPass==$cp) {
return true;
}
else {
return false;
}
}
?>
checkserver.php
<?php
define('INCLUDE_CHECK',true);
include ("connect.php");
$user = mysql_real_escape_string($_GET['userName']);
$serverid = mysql_real_escape_string($_GET['serverId']);
$result = mysql_query("Select $db_columnUser From $db_table Where $db_columnUser='$userName' And $db_columnServer='$serverid'") or die ("Запрос к базе завершился ошибкой.");
if(mysql_num_rows($result) == 1){
echo "YES";
} else{
echo "NO";
}
?>
define('INCLUDE_CHECK',true);
include ("connect.php");
$user = mysql_real_escape_string($_GET['userName']);
$serverid = mysql_real_escape_string($_GET['serverId']);
$result = mysql_query("Select $db_columnUser From $db_table Where $db_columnUser='$userName' And $db_columnServer='$serverid'") or die ("Запрос к базе завершился ошибкой.");
if(mysql_num_rows($result) == 1){
echo "YES";
} else{
echo "NO";
}
?>
joinserver.php
<?php
define('INCLUDE_CHECK',true);
include ("connect.php");
$sessionid = mysql_real_escape_string($_GET['sessionId']);
$user = mysql_real_escape_string($_GET['user']);
$serverid = mysql_real_escape_string($_GET['serverId']);
$result = mysql_query("Select $db_columnUser From $db_table Where $db_columnSesId='$sessionid' And $db_columnUser='$user' And $db_columnServer='$serverid'") or die ("Запрос к базе завершился ошибкой.");
if(mysql_num_rows($result) == 1){
echo "OK";
} else {
$result = mysql_query("Update $db_table SET $db_columnServer='$serverid' Where $db_columnSesId='$sessionid' And $db_columnUser='$user'") or die ("Запрос к базе завершился ощибкой.");
if(mysql_affected_rows() == 1){
echo "OK";
} else {
echo "Bad login";
}
}
?>
define('INCLUDE_CHECK',true);
include ("connect.php");
$sessionid = mysql_real_escape_string($_GET['sessionId']);
$user = mysql_real_escape_string($_GET['user']);
$serverid = mysql_real_escape_string($_GET['serverId']);
$result = mysql_query("Select $db_columnUser From $db_table Where $db_columnSesId='$sessionid' And $db_columnUser='$user' And $db_columnServer='$serverid'") or die ("Запрос к базе завершился ошибкой.");
if(mysql_num_rows($result) == 1){
echo "OK";
} else {
$result = mysql_query("Update $db_table SET $db_columnServer='$serverid' Where $db_columnSesId='$sessionid' And $db_columnUser='$user'") or die ("Запрос к базе завершился ощибкой.");
if(mysql_affected_rows() == 1){
echo "OK";
} else {
echo "Bad login";
}
}
?>
index1.php
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Проверка/title>
</head>
<body>
<form action="auth.php" method="post">
<p><br />Логин:<br /><input type=text name=user class="field" /><br /></p>
<p><br />Пароль:<br /><input type=text name=password class="field" /><br /></p>
<p><br />Версия, ввести 13:<br /><input type=text name=version class="field" /><br /></p>
<p><input type="submit" name="submit" value="Отправить"/><br /></p>
</form>
</body>
</html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Проверка/title>
</head>
<body>
<form action="auth.php" method="post">
<p><br />Логин:<br /><input type=text name=user class="field" /><br /></p>
<p><br />Пароль:<br /><input type=text name=password class="field" /><br /></p>
<p><br />Версия, ввести 13:<br /><input type=text name=version class="field" /><br /></p>
<p><input type="submit" name="submit" value="Отправить"/><br /></p>
</form>
</body>
</html>
index2.php
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Проверка</title>
</head>
<body>
<form action="joinserver.php" method="get">
<p><br />Логин:<br /><input type=text name=user class="field" /><br /></p>
<p><br />Сессия:<br /><input type=text name=sessionId class="field" /><br /></p>
<p><br />Сервер:<br /><input type=text name=serverId class="field" /><br /></p>
<p><input type="submit" name="submit" value="Отправить"/><br /></p>
</form>
</body>
</html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Проверка</title>
</head>
<body>
<form action="joinserver.php" method="get">
<p><br />Логин:<br /><input type=text name=user class="field" /><br /></p>
<p><br />Сессия:<br /><input type=text name=sessionId class="field" /><br /></p>
<p><br />Сервер:<br /><input type=text name=serverId class="field" /><br /></p>
<p><input type="submit" name="submit" value="Отправить"/><br /></p>
</form>
</body>
</html>
index3.php
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Проверка</title>
</head>
<body>
<form action="checkserver.php" method="get">
<p><br />Логин:<br /><input type=text name=user class="field" /><br /></p>
<p><br />Сервер:<br /><input type=text name=serverId class="field" /><br /></p>
<p><input type="submit" name="submit" value="Отправить"/><br /></p>
</form>
</body>
</html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Проверка</title>
</head>
<body>
<form action="checkserver.php" method="get">
<p><br />Логин:<br /><input type=text name=user class="field" /><br /></p>
<p><br />Сервер:<br /><input type=text name=serverId class="field" /><br /></p>
<p><input type="submit" name="submit" value="Отправить"/><br /></p>
</form>
</body>
</html>
Последнее редактирование: