Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 1 из 2 1 2 ПоследняяПоследняя
Показано с 1 по 10 из 11
  1. #1
    Аватар для Wise
    Пользователь

    Статус
    Оффлайн
    Регистрация
    30.10.2014
    Сообщений
    148
    Репутация:
    37 ±

    Обновление пароля. Сохранение данных в MySQL.

    Здравствуйте уважаемые пользователи. Не обновляется пароль.
    PHP код:
    if(!strcmp(cmdtext"/setpass"true))
    {
      if(
    isnull(params)) return SendClientMessage(playerid, -1"/setpass [новый пароль].");
      if(
    strlen(params) < || strlen(params) > 20) return SendClientMessage(playerid, -1"Не меньше 6 и не больше 20 символов.");
      new 
    string[80+MAX_PLAYER_NAME+1];
      
    printf("До: %s"pInfo[playerid][Password]);
      
    format(stringsizeof(string), "UPDATE `users` SET `Password` = '%s' WHERE `uName` = '%s'"strlen(params), nick(playerid));
      
    mysql_function_query(connect_basestringfalse"""");
      
    printf("После: %s"pInfo[playerid][Password]);  
      return 
    1;

    В до и после пишет: "none" (это стандартное значение, установленное в MySQL).
    Помогите пожалуйста решить данную проблему.

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

    Статус
    Оффлайн
    Регистрация
    19.10.2013
    Адрес
    Ярославль
    Сообщений
    1,366
    Репутация:
    774 ±
    Для чего вы в данном случае используете функцию "strlen" ?

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

    Статус
    Оффлайн
    Регистрация
    30.10.2014
    Сообщений
    148
    Репутация:
    37 ±
    Цитата Сообщение от Londlem Посмотреть сообщение
    Для чего вы в данном случае используете функцию "strlen" ?
    PHP код:
    error 033: array must be indexed (variable "params"

  4. #4
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Цитата Сообщение от Wise Посмотреть сообщение
    PHP код:
    error 033: array must be indexed (variable "params"
    Речь была про использование strlen внутри format, но и в if можно было обойтись одним вызовом функции.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  5. 2 пользователя(ей) сказали cпасибо:
    L0ndl3m (22.02.2016) Wise (22.02.2016)
  6. #5
    Аватар для Wise
    Пользователь

    Статус
    Оффлайн
    Регистрация
    30.10.2014
    Сообщений
    148
    Репутация:
    37 ±
    В любом случае, даже если использовать просто params, данные не обновляются.

  7. #6
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Цитата Сообщение от Wise Посмотреть сообщение
    В любом случае, даже если использовать просто params, данные не обновляются.
    Ну так вы же их не обновили в pInfo[playerid][Password] (или вы думали, что содержимое массива изменится само по себе?)
    Но если запрос был сделан правильно, то пароль должен обновиться в БД.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  8. Пользователь сказал cпасибо:
    Wise (22.02.2016)
  9. #7
    Аватар для _lizard
    Пользователь

    Статус
    Оффлайн
    Регистрация
    11.02.2016
    Адрес
    Геленджик
    Сообщений
    193
    Репутация:
    26 ±
    format(string, sizeof(string), "UPDATE `users` SET `Password` = '%s' WHERE `uName` = '%s'", strlen(params), nick(playerid));
    Вы вместо пароля записываете его длину, это норма?

    Точнее даже не записываете, ибо при попытки использования %s и целочисленного значения (strlen) выдаст ошибку.
    Последний раз редактировалось _lizard; 22.02.2016 в 23:16.

  10. Пользователь сказал cпасибо:
    Wise (22.02.2016)
  11. #8
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Ну или как-то так
    PHP код:
    if(!strcmp(cmdtext"/setpass"true))
    {
        new 
    string[80+MAX_PLAYER_NAME-4+1];
        
    string[0] = strlen(params);
        if(!
    string[0]) return SendClientMessage(playerid, -1"/setpass [новый пароль].");
        if(
    string[0] < || string[0] > 20) return SendClientMessage(playerid, -1"Не меньше 6 и не больше 20 символов.");
        
        
        
    printf("До: %s"pInfo[playerid][Password]);
        
    strcat(pInfo[playerid][Password], paramsstring[0]);
        
        
    format(stringsizeof(string), "UPDATE `users` SET `Password` = '%s' WHERE `uName` = '%s'"paramsnick(playerid));
        
    mysql_function_query(connect_basestringfalse"""");
        
        
    printf("После: %s"params);
        return 
    1;

    Последний раз редактировалось DeimoS; 22.02.2016 в 23:16.
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

  12. Пользователь сказал cпасибо:
    Wise (22.02.2016)
  13. #9
    Аватар для Wise
    Пользователь

    Статус
    Оффлайн
    Регистрация
    30.10.2014
    Сообщений
    148
    Репутация:
    37 ±
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Ну так вы же их не обновили в pInfo[playerid][Password] (вы же не думаете, что содержимое массива изменится само по себе?)
    Но если запрос был сделан правильно, то пароль должен обновиться в БД.
    Немного ступил. Я пытался присвоить переменной Password новое значение, но ничего не получается.
    PHP код:
    uInfo[playerid][uDostup] = strlen(params); 
    Без strlen выходит ошибка. Если со strlen, на сервере написать /setpass gfhjkm
    то данные в логах будут такими:
    До: none
    После: fhjkm (первая буква исчезает).

    - - - Добавлено - - -

    Цитата Сообщение от DeimoS Посмотреть сообщение
    Ну или как-то так
    PHP код:
    if(!strcmp(cmdtext"/setpass"true))
    {
        new 
    string[80+MAX_PLAYER_NAME-4+1];
        
    string[0] = strlen(params);
        if(!
    string[0]) return SendClientMessage(playerid, -1"/setpass [новый пароль].");
        if(
    string[0] < || string[0] > 20) return SendClientMessage(playerid, -1"Не меньше 6 и не больше 20 символов.");
        
        
        
    printf("До: %s"pInfo[playerid][Password]);
        
    strcat(pInfo[playerid][Password], paramsstring[0]);
        
        
    format(stringsizeof(string), "UPDATE `users` SET `Password` = '%s' WHERE `uName` = '%s'"paramsnick(playerid));
        
    mysql_function_query(connect_basestringfalse"""");
        
        
    printf("После: %s"params);
        return 
    1;

    Сейчас попробую ваш вариант.

  14. #10
    Аватар для L0ndl3m
    Пользователь

    Статус
    Оффлайн
    Регистрация
    19.10.2013
    Адрес
    Ярославль
    Сообщений
    1,366
    Репутация:
    774 ±

  15. Пользователь сказал cпасибо:
    Wise (22.02.2016)
 

 
Страница 1 из 2 1 2 ПоследняяПоследняя

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

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

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

Ваши права

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