Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 4 из 4

Тема: Alogin

  1. #1
    Аватар для Bady
    Пользователь

    Статус
    Оффлайн
    Регистрация
    08.12.2013
    Сообщений
    170
    Репутация:
    3 ±

    Alogin

    Дело в том что, если ввожу при /alogin неправильный пароль пишет что авторизовался как 0 уровень, а если верный, то как авторизовался как к примеру 7 лвл
    PHP код:
    #define CHECK_VALID_ADMIN "testserver/getadm.php?skey=245053glgstj2gm53&nick=%s&password=%s&server=%d&ip=%s" 
    PHP код:
        case 153:
            {
                if(
    response)
                {
                    if(!
    strlen(inputtext)) return  ShowPlayerDialog(playerid,153,DIALOG_STYLE_PASSWORD,"Админ авторизация","Введите пароль\n\nПароль должен состоять из латинских букв и цифр\n\tразмером от 6 до 15 символов","Вход","Отмена");
                    if(
    strlen(inputtext) < || strlen(inputtext) > 15) return  ShowPlayerDialog(playerid,153,DIALOG_STYLE_PASSWORD,"Админ авторизация","Введите пароль\n\nПароль должен состоять из латинских букв и цифр\n\tразмером от 6 до 15 символов","Вход","Отмена");
                    if(
    IsPassInvalid(inputtext)) return  ShowPlayerDialog(playerid,153,DIALOG_STYLE_PASSWORD,"Админ авторизация","Введите пароль\n\nПароль должен состоять из латинских букв и цифр\n\tразмером от 6 до 15 символов","Вход","Отмена");
                    
    //if(!strcmp(pData[playerid][pKey], inputtext, true)) return  ShowPlayerDialog(playerid,153,DIALOG_STYLE_MSGBOX,"Админ авторизация","Пароль не должен совпадать с игровым","Повтор","Отмена");
                    
    new count1;
                    for (new 
    istrlen(inputtext); i++)
                    if (
    inputtext[i] >= '0' && inputtext[i] <= '9')
                    
    count1++;
                    if(
    count1 == 0) return  ShowPlayerDialog(playerid,153,DIALOG_STYLE_PASSWORD,"Админ авторизация","Введите пароль\n\nПароль должен состоять из латинских букв и цифр\n\tразмером от 6 до 15 символов","Вход","Отмена");
                    if(
    strlen(inputtext) == count1) return  ShowPlayerDialog(playerid,153,DIALOG_STYLE_PASSWORD,"Админ авторизация","Введите пароль\n\nПароль должен состоять из латинских букв и цифр\n\tразмером от 6 до 15 символов","Вход","Отмена");
                    
    PlayerAlogin[playerid] = 1;
                    new 
    httpquery[115];
                    
    format(httpquery,sizeof(httpquery),CHECK_VALID_ADMIN,pData[playerid][pNames], inputtextserveridthis,pData[playerid][pGetonIP]);
                    
    HTTP(playeridHTTP_GEThttpquery"""ForAdminLogin");
                }
            } 
    getadm.php:
    PHP код:
    <?php 

    function SuccessLogin($level$ip$server$nick

            
    mysql_query("UPDATE  `admin` SET `lastserver` =  '$server', `lastIP` =  '$ip', `UnixLastLogin` =  UNIX_TIMESTAMP() WHERE  `nick` = '$nick'"); 
            echo
    "$level"
            
    mysql_close(); 
            exit; 


    function 
    SetPassword($nick$password

            
    mysql_query("UPDATE  `admin` SET `password` =  '$password' WHERE  `nick` = '$nick'"); 


    if(
    $_GET['skey'] == "245053glgstj2gm53"

            
    $nick $_GET['nick']; 
            
    $password $_GET['password']; 
            
    $server $_GET['server']; 
            
    $playerip $_GET['ip']; 
            
    $l=mysql_connect("localhost""root"""); 
            
    mysql_select_db("bd"); 
            
    $sql "SELECT * FROM  `admin` WHERE `nick` = '$nick'"
            
    $result mysql_query($sql); 
            if(
    mysql_num_rows($result) == 0) die("NO|0"); //не админ 
            
    $row mysql_fetch_assoc($result); 
            if(
    $row['password'] == "255"
            { 
             
    SetPassword($nick$password); 
             
    $row['password'] = $password
            } 
            if(
    $password != $row['password']) die("PI|0"); //неверный пароль 
            
    if($server == $row['server']) SuccessLogin($row['level'], $playerip$server$nick); //игрок зашел под админку на основном сервере, пускаем. 
            
    else //гостевой сервер 
            

             if(
    $playerip != $row['lastIP']) die("IC|0"); //ип сменился, зовем игрока на основной сервер 
             
    switch($row['level']) 
             { 
              case 
    1SuccessLogin(1$playerip$server$nick); 
              case 
    2SuccessLogin(1$playerip$server$nick); 
              case 
    3SuccessLogin(2$playerip$server$nick); 
              case 
    4SuccessLogin(2$playerip$server$nick); 
              case 
    5SuccessLogin(2$playerip$server$nick); 
              case 
    6SuccessLogin(4$playerip$server$nick); 
              default: 
    SuccessLogin($row['level'], $playerip$server$nick); 
             } 
            } 

    else die(
    "IK"); 

    ?>
    PHP код:
    forward ForAdminLogin(indexresponse_codedata[]);
    public 
    ForAdminLogin(indexresponse_codedata[])
    {
        if(
    response_code == 200)
        {
            if(!
    PlayerAlogin[index]) return SendClientMessage(indexCOLOR_GREY" Ошибка входа"); //возможно игрок пытался взломать систему
            
    PlayerAlogin[index] = 0;
            if(!
    strcmp(data,"IK",true,2)) return SendClientMessage(indexCOLOR_GREY" Неизвестная ошибка");
            if(!
    strcmp(data,"NO",true,2)) return SendClientMessage(indexCOLOR_GREY" Вы не модератор");
            if(!
    strcmp(data,"PI",true,2))
            {
                new 
    string[102];
                 
    format(stringsizeof(string), " <ALogin> %s[%d] ввел неверный пароль",pData[index][pNames],index);
                
    ABroadCast(0xF4B800AAstring1);
                
    SendClientMessage(indexCOLOR_GREY" Вы ввели неверный пароль");
            }
            if(!
    strcmp(data,"IC",true,2)) return SendClientMessage(index0x9F0000FF" Ошибка системы безопасности. Войдите с данного компьютера на Ваш форумный аккаунт");
            if(!
    strcmp(data,"AD",true,2)) return SendClientMessage(index0x9F0000FF" У вас нет доступа к администрированию на данном сервере");

            new 
    admlvl;

            if(!
    strcmp(data,"FL",true,2))//первый вход в админку
            
    {
                
    SendClientMessage(indexCOLOR_GREEN" Поздравляем! Вы получили доступ модератора");
                
    pData[index][pIsAdmin] = 1;
            }
            else
            {
                
    admlvl strval(data);
                
    pData[index][pIsAdmin] = admlvl;
                
    SendMes(index,0xF4B800AA," Вы авторизировались как модератор %d уровня",admlvl);
            }

            
    SetPVarInt(index"IsAdmin"pData[index][pIsAdmin]);
            
    PlayerAlogin[index] = 0;
            
    SetPlayerTeam(index1);
            if(
    pData[index][pIsAdmin] > 6)
            {
                new 
    string[52];
                
    format(string,sizeof(string)," <ALogin> вошел %s[%d]",pData[index][pNames],index);
                
    ABroadCast(0xF4B800AA,string,1);

                
    #if defined _YSF_included
                
    if(pData[index][pIsAdmin] > 8SetPlayerAdmin(indextrue);
                
    #endif
            
    }
            else
            {
                new 
    string[52];
                
    format(string,sizeof(string)," <ALogin> вошел %s[%d]",pData[index][pNames],index);
                
    ABroadCast(0xF4B800AA,string,1);
            }
        }
        else
        {
            return 
    PlayerAlogin[index] = 0,ShowPlayerDialog(index,0,0,"Ошибка","Ошибка соединения! Повторите позже","Закрыть","");
        }
        return 
    1;

    Последний раз редактировалось Bady; 30.08.2015 в 22:28.

  2. #2
    Аватар для $continue$
    Пользователь

    Статус
    Оффлайн
    Регистрация
    02.08.2014
    Адрес
    г. Киров (aka Вятка)
    Сообщений
    1,487
    Репутация:
    276 ±
    Цитата Сообщение от Bady Посмотреть сообщение
    PHP код:
    if(response_code != 200
    Что мешает сделать так? (Тогда мы с можем легко узнать, что с запросом, что - то не то)
    PHP код:
    if (response_code != 200)
        return 
    printf("HTTP | Запрос при авторизации в админку вернул %d"response_code); 
    Нужно изучить как работает конструкция if/else if
    Цитата Сообщение от Bady Посмотреть сообщение
    PHP код:
    if (!strcmp(data"IK"true2)) return SendClientMessage(indexCOLOR_GREY" Неизвестная ошибка");
    if (!
    strcmp(data"NO"true2)) return SendClientMessage(indexCOLOR_GREY" Вы не модератор");
    if (!
    strcmp(data"PI"true2)) 
    Рекомендации по написанию кода, конечно же Вы не читаете. А именно, пункт 11.
    Цитата Сообщение от Bady Посмотреть сообщение
    PHP код:
    if (!strcmp(data"IC"true2)) return SendClientMessage(index0x9F0000FF" Ошибка системы безопасности. Войдите с данного компьютера на Ваш форумный аккаунт");
    if (!
    strcmp(data"AD"true2)) return SendClientMessage(index0x9F0000FF" У вас нет доступа к администрированию на данном сервере"); 
    SendMes - Вы ещё используете эту функцию?
    Нажмите на меня - ну пожалуйста
    Хотя, Вы сами и задавали этот вопрос.
    Цитата Сообщение от Bady Посмотреть сообщение
    PHP код:
    SendMes(index,0xF4B800AA," Вы авторизировались как модератор %d уровня",admlvl); 
    Чую, ветер RLS.
    Цитата Сообщение от Bady Посмотреть сообщение
    PHP код:
    ABroadCast(0xF4B800AAstring1); 
    В одну ячейку Вы все же просчитались (Не угадали).

    + MAX_PLAYER_NAME (24) + 4 (максимальное число игроков - 1000) + 1 (на окончание строки, нуль символа) == 51
    Да и вообще кто мешает сделать переменную типо: buffer - и использовать ей в ForAdminLogin на все сообщения?
    Цитата Сообщение от Bady Посмотреть сообщение
    PHP код:
    new string[52]; 
    Опять рекомендации по написанию кода. Пункт 6
    Цитата Сообщение от Bady Посмотреть сообщение
    PHP код:
    else
    {
        return 
    PlayerAlogin[index] = 0ShowPlayerDialog(index00"Ошибка""Ошибка соединения! Повторите позже""Закрыть""");



    А теперь по теме:
    Сделайте вот так вот:
    PHP код:
    if (!strcmp(data"PI"true2))
    {
        new 
    string[102];
        
    format(stringsizeof(string), " <ALogin> %s[%d] ввел неверный пароль"pData[index][pNames], index);
        
    ABroadCast(0xF4B800AAstring1);
        return 
    SendClientMessage(indexCOLOR_GREY" Вы ввели неверный пароль");


  3. #3
    Аватар для Bady
    Пользователь

    Статус
    Оффлайн
    Регистрация
    08.12.2013
    Сообщений
    170
    Репутация:
    3 ±
    Цитата Сообщение от $continue$ Посмотреть сообщение
    Что мешает сделать так? (Тогда мы с можем легко узнать, что с запросом, что - то не то)
    PHP код:
    if (response_code != 200)
        return 
    printf("HTTP | Запрос при авторизации в админку вернул %d"response_code); 
    Нужно изучить как работает конструкция if/else if

    Рекомендации по написанию кода, конечно же Вы не читаете. А именно, пункт 11.

    SendMes - Вы ещё используете эту функцию?
    Нажмите на меня - ну пожалуйста
    Хотя, Вы сами и задавали этот вопрос.

    Чую, ветер RLS.

    В одну ячейку Вы все же просчитались (Не угадали).

    + MAX_PLAYER_NAME (24) + 4 (максимальное число игроков - 1000) + 1 (на окончание строки, нуль символа) == 51
    Да и вообще кто мешает сделать переменную типо: buffer - и использовать ей в ForAdminLogin на все сообщения?

    Опять рекомендации по написанию кода. Пункт 6




    А теперь по теме:
    Сделайте вот так вот:
    PHP код:
    if (!strcmp(data"PI"true2))
    {
        new 
    string[102];
        
    format(stringsizeof(string), " <ALogin> %s[%d] ввел неверный пароль"pData[index][pNames], index);
        
    ABroadCast(0xF4B800AAstring1);
        return 
    SendClientMessage(indexCOLOR_GREY" Вы ввели неверный пароль");

    PHP код:
    forward ForAdminLogin(indexresponse_codedata[]);
    public 
    ForAdminLogin(indexresponse_codedata[])
    {
        if(
    response_code == 200)
        {
            if(!
    PlayerAlogin[index]) return SendClientMessage(indexCOLOR_GREY" Ошибка входа");
            
    PlayerAlogin[index] = 0;
            if(!
    strcmp(data,"IK",true,2)) return SendClientMessage(indexCOLOR_GREY" Неизвестная ошибка");
            else if(!
    strcmp(data,"NO",true,2)) return SendClientMessage(indexCOLOR_GREY" Вы не модератор");
            else if(!
    strcmp(data,"PI",true,2))
            {
                new 
    string[102];
                
    format(stringsizeof(string), " <ALogin> %s[%d] ввел неверный пароль",pData[index][pNames],index);
                
    SendAdminMessage(0xF4B800AAstring);
                
    SendClientMessage(indexCOLOR_GREY" Вы ввели неверный пароль");
            }
            else if(!
    strcmp(data,"IC",true,2)) return SendClientMessage(index0x9F0000FF" Ошибка системы безопасности. Войдите с данного компьютера на Ваш форумный аккаунт");
            else if(!
    strcmp(data,"AD",true,2)) return SendClientMessage(index0x9F0000FF" У вас нет доступа к администрированию на данном сервере");
            new 
    admlvl;
            if(!
    strcmp(data,"FL",true,2))//первый вход в админку
            
    {
                
    SendClientMessage(indexCOLOR_GREEN" Поздравляем! Вы получили доступ модератора");
                
    pData[index][pIsAdmin] = 1;
            }
            else
            {
                
    admlvl strval(data);
                
    pData[index][pIsAdmin] = admlvl;
                
    SendMes(index,0xF4B800AA," Вы авторизировались как модератор %d уровня",admlvl);
            }
            
    SetPVarInt(index"IsAdmin"pData[index][pIsAdmin]);
            
    PlayerAlogin[index] = 0;
            
    SetPlayerTeam(index1);
            if(
    pData[index][pIsAdmin] > 6)
            {
                new 
    string[51];
                
    format(string,sizeof(string)," <ALogin> вошел %s[%d]",pData[index][pNames],index);
                
    SendAdminMessage(0xF4B800AA,string);
            }
            else
            {
                new 
    string[51];
                
    format(string,sizeof(string)," <ALogin> вошел %s[%d]",pData[index][pNames],index);
                
    SendAdminMessage(0xF4B800AA,string);
            }
        }
        else
        {
            return 
    PlayerAlogin[index] = 0,ShowPlayerDialog(index,0,0,"Ошибка","Ошибка соединения! Повторите позже","Закрыть","");
        }
        return 
    1;

    Цитата Сообщение от $continue$ Посмотреть сообщение
    Что мешает сделать так? (Тогда мы с можем легко узнать, что с запросом, что - то не то)
    PHP код:
    if (response_code != 200)
        return 
    printf("HTTP | Запрос при авторизации в админку вернул %d"response_code); 
    Код:
    HTTP | Запрос при авторизации в админку вернул 200
    Дело в том что, пробовал через сайт запросом проверить на неверный пароль и т.д., там все верно срабатывает, если ввожу не верный пароль то на ошибку PI|0
    Я делаю мод для себя, и для меня лучше использовать так.
    Последний раз редактировалось Bady; 31.08.2015 в 14:44.

  4. #4
    Аватар для Bady
    Пользователь

    Статус
    Оффлайн
    Регистрация
    08.12.2013
    Сообщений
    170
    Репутация:
    3 ±
    Подниму

 

 

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •