Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 7 из 7
  1. #1
    Аватар для PawnoNoob
    Пользователь

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

    Небольшая проблема с авторизацией

    Приветствую Вас. Не буду загружать Вас большим количеством лишней информации, а сразу перейду к делу:
    Столкнулся с небольшой проблемой, а именно с командой авторизации администратора (Назовём команду "/logadm").
    Описание проблемы: команда выполнена не на диалоге, а просто ввод текста в чат (/logadm qwerty), но, если ты вводишь любые символы и даже превышаешь выделенное количество символов для пароля от панели, тебя всё равно авторизует, как администратора, при этом не срабатывает кик при вводе неверного пароля. Пароль от панели администратора может содержать буквы английского алфавита и цифры, кодировка в базе данных: cp1251_bin, тип varchar(12 символов) и по умолчанию установлено 0.
    Сам код (не копировал из своего кода, но суть та же)
    PHP код:
    CMD:logadm(playeridparams[])
    {
        
    // проверка на уровень администратора.
        
    new pass[12];
        if(
    sscanf(params"s[12]"pass)) return SendClientMessage(playeridcGray"текст использования команды");
        
    // здесь показываем информацию о том, что пароль должен быть не больше 12 символов (если введёт больше 12)
        
    if(strcmp(passinfo[playerid][admpass], false))
        {
            
    // выводим сообщение администрации о том, что администратор ввёл неверный пароль с помощью format.
            // кикаем администратора, который неверно ввёл пароль.
        
    }
        else
        {
            
    // авторизуем администратора, даём доступ ко всем командам (назовём это "admlog[playerid] = true;")
            // оповещаем администраторов о том, что игрок авторизовался с помощью format.
        
    }
        return 
    1;

    Не нужно задавать вопрос "А почему нету переменной new string?" и тому подобные вопросы. Я повторюсь, что не копировал из своего кода, а написал так, как выглядит команда в нём, изменяя почти всё.

    Решил я проверить свой пароль от панели администратора и сделал небольшую команду (назовём её "/daipass"). Выделил ей string размером 13 символов и сделал так, чтобы при вводе команды выводило сообщение с паролем от панели администратора в чат.
    PHP код:
    CMD:daipass(playerid)
    {
        new 
    string[13];
        
    format(stringsizeof(string), "%s"info[playerid][admpass]);
            
    SendClientMessage(playeridцветstring);
            return 
    1
    Но после ввода данной команды мне выводило лишь пустое сообщение, в котором вообще ничего не было написано.
    Примечание: после ввода пароля от аккаунта, при загрузке аккаунта игрока, загружает пароль от панели администратора:
    PHP код:
    info[playerid][admpass] = cache_get_field_content_int(0"название столбца"название переменной подключения); 
    (пароль сохраняется в базе данных)
    Последний раз редактировалось PawnoNoob; 16.04.2016 в 00:32. Причина: добавил немного B-)

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

    Статус
    Оффлайн
    Регистрация
    08.12.2015
    Адрес
    San Fierro
    Сообщений
    217
    Репутация:
    39 ±
    А почему cache_get_field_content_int?

  3. 2 пользователя(ей) сказали cпасибо:
    $continue$ (16.04.2016) PawnoNoob (16.04.2016)
  4. #3
    Аватар для PawnoNoob
    Пользователь

    Статус
    Оффлайн
    Регистрация
    31.03.2016
    Сообщений
    257
    Репутация:
    3 ±
    Цитата Сообщение от TheMallard Посмотреть сообщение
    А почему cache_get_field_content_int?
    А что кроме этого использовать можно? Я уже не раз говорил, что в этом ещё "так себе" разбираюсь

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

    Статус
    Оффлайн
    Регистрация
    13.10.2015
    Сообщений
    516
    Репутация:
    21 ±
    Цитата Сообщение от PawnoNoob Посмотреть сообщение
    А что кроме этого использовать можно? Я уже не раз говорил, что в этом ещё "так себе" разбираюсь
    Используй:
    PHP код:
    native cache_get_field_content(row, const field_name[], destination[], connectionHandle 1max_len sizeof(destination)); 

  6. Пользователь сказал cпасибо:
    PawnoNoob (16.04.2016)
  7. #5
    Аватар для PawnoNoob
    Пользователь

    Статус
    Оффлайн
    Регистрация
    31.03.2016
    Сообщений
    257
    Репутация:
    3 ±
    То есть функция cache_get_field_content_int используется для поиска чисел в базе данных, а cache_get_field_content и числа и буквы, верно? Просто я редко захожу в mysql_log, а тут решил глянуть, что да как, а мне ошибку выбило... больше 20 раз одну и ту же (cache_get_field_content_int - invalid datatype), ну я и "вбил" в поисковик этот запрос и прочитал информацию.

  8. #6
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Минутка самопиара, но вот в этой теме я описывал предназначения всех видов функций работы с данными в MySQL R-39 и подобных R-39-ой версии.
    Тебе нужен пункт №6, а именно спойлер "Разбор кода:" после "Загрузка аккаунта:".
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  9. Пользователь сказал cпасибо:
    PawnoNoob (16.04.2016)
  10. #7
    Аватар для PawnoNoob
    Пользователь

    Статус
    Оффлайн
    Регистрация
    31.03.2016
    Сообщений
    257
    Репутация:
    3 ±
    Оу, спасибо
    Ещё вот вопрос появился относительно авторизации и регистрации в целом.
    Если ты выходишь из игры во время выбора внешности, то при следующем входе у тебя будет скин CJ.
    Я пробовал сделать следующее:
    В OnPlayerSpawn вставлял код
    PHP код:
    if(!pinfo[playerid][skin])
    {
    // код выбора внешности.

    Всё это "дело" работало, но вот при авторизации или регистрации вместо камеры в небе меня телепортировало в интерьер и предлагало выбрать внешность, но при этом я видел окно авторизации/регистрации. Что в данном случае можно сделать?

 

 

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

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

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

Ваши права

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