Помогите Сессии в лаунчере

  • Автор темы Автор темы beezy
  • Дата начала Дата начала

beezy

Участник
Пользователь
Баллы
28
Как сделать чтобы каждая сессия была лишь для 1 захода в игру,а потом она менялась?
 
Плагином подключится к базе и при onPlayerLogout очищать сессию
 
Это уже со стороны сервера, в checkserver.php допиши удаление сессии, после успешного захода на сервер.
 
Код:
<?php
define('INCLUDE_CHECK',true);
include ("connect.php");
$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_columnUser='$user' And $db_columnServer='$serverid'") or die (mysql_error());
if(mysql_num_rows($result) == 1)
{
echo "YES";
mysql_query("DELETE FROM $db_table WHERE $db_columnServer='$serverid'") or die (mysql_error());
}
else echo "NO";
?>

За работоспособность не ручаюсь. Это checkserver.php.
 
Код:
<?php
define('INCLUDE_CHECK',true);
include ("connect.php");
$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_columnUser='$user' And $db_columnServer='$serverid'") or die (mysql_error());
if(mysql_num_rows($result) == 1)
{
echo "YES";
mysql_query("DELETE FROM $db_table WHERE $db_columnServer='$serverid'") or die (mysql_error());
}
else echo "NO";
?>

За работоспособность не ручаюсь. Это checkserver.php.

Немного неправильно, скорее всего надо
PHP:
mysql_query("DELETE $db_columnServer FROM $db_table WHERE $db_columnServer='$serverid'") or die (mysql_error());
 
Лолки, вы в checkserver удаляете пользователя после его успешной авторизации.
 
Лолки, вы в checkserver удаляете пользователя после его успешной авторизации.
Ой. Точняк.
тогда попробуй
PHP:
mysql_query("UPDATE $db_table SET $db_columnServer =null WHERE $db_columnServer='$serverid'") or die (mysql_error());
 
Одноразовая сессия.
Код:
<?php
    define('INCLUDE_CHECK',true);
    include ("connect.php");
    $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_columnUser='$user' And $db_columnServer='$serverid'") or die (mysql_error());
    if(mysql_num_rows($result) == 1) echo "YES";
    else echo "NO";
    $sessid = generateSessionId();
    mysql_query("Update $db_table SET $db_columnSesId='$sessid' Where $db_columnUser='$user'") or die (mysql_error());
        function generateSessionId(){
    // generate rand num
    srand(time());
    $randNum = rand(1000000000, 2147483647).rand(1000000000, 2147483647).rand(0,9);
    return $randNum;
    }
?>
 
Лолки, вы в checkserver удаляете пользователя после его успешной авторизации.
и? Это не помешает ему войти на сервер и играть, а при следующем заходе с генерируется новая сессия.
 
и? Это не помешает ему войти на сервер и играть, а при следующем заходе с генерируется новая сессия.
Этот запрос вообще удаляет пользователя из базы. Регистрироваться заново надо. Разницу чуешь?
 
Этот запрос вообще удаляет пользователя из базы. Регистрироваться заново надо. Разницу чуешь?
возможно я ошибся в синтаксисе, задумка была удалить только сессию.
 
Одноразовая сессия.
Код:
<?php
    define('INCLUDE_CHECK',true);
    include ("connect.php");
    $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_columnUser='$user' And $db_columnServer='$serverid'") or die (mysql_error());
    if(mysql_num_rows($result) == 1) echo "YES";
    else echo "NO";
    $sessid = generateSessionId();
    mysql_query("Update $db_table SET $db_columnSesId='$sessid' Where $db_columnUser='$user'") or die (mysql_error());
        function generateSessionId(){
    // generate rand num
    srand(time());
    $randNum = rand(1000000000, 2147483647).rand(1000000000, 2147483647).rand(0,9);
    return $randNum;
    }
?>
для Webcmr пойдет? p.s строку connect.php можно удалять? у меня его нету.
 
Тогда нужно подключить свой конфиг и чтоб все $переменные совпадали.
checkserver.php
что тут конкретно менять? неуверен просто, строки менять.
Код:
<?php
require_once('../system.php');
$str = '';   
 
if (!empty($_GET['user']) and !empty($_GET['serverId'])) {
 
    $user = mysql_real_escape_string($_GET['user']);
    $serverid = mysql_real_escape_string($_GET['serverId']);
 
    if (!preg_match("/^[a-zA-Z0-9_-]+$/", $user)) {
       
                $str = "Server Test [Bad symbols Login] ";
                echo "NO";
       
    } elseif (!preg_match("/^[a-z0-9_-]+$/", $serverid)) {
       
                $str = "Server Test [Bad symbols ServerId] ";
                echo "NO";
               
    } else {   
       
        $result = BD("SELECT $bd_aUsername FROM $bd_table_accounts WHERE $bd_aUsername='$user' AND $bd_aServer='$serverid'");
 
        if(mysql_num_rows($result) == 1){
       
          $user_login = new User($user,$bd_aUsername);
          $user_login->gameLoginConfirm();
         
          $str = "Server Test [Success]";
          echo "YES";
         
        } else {
       
          $str = "Server Test [User not found] User [$user] Server ID [$serverid]";
          echo "NO";
                     
        }
       
    }
 
} else {
 
    $str = "Server Test [GET parameter empty] ";
    if (empty($_GET['user'])) $str .= "USER parameter is empty | ";
    if (empty($_GET['serverId'])) $str .= "SERVERID parameter is empty";
   
    echo "NO";
 
}
 
vtxtlog($str);
?>
 
Назад
Верх