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

Реклама


**Как получить V.I.P** (Перейти)
Чтобы заказать рекламу на Pro-Pawn.Ru, обращайтесь в Skype.
Баннерная реклама 200руб/мес, Текстовая 100руб/мес.
Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 11
  1. #1
    Аватар для Wise
    Пользователь

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

    Обновление пароля. Сохранение данных в 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
    Аватар для Londlem
    Модератор

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

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

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

  4. #4
    Аватар для Daniel_Cortez
    new fuck_logic[0] = EOS;

    Статус
    Онлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    1,661
    Репутация:
    2144 ±
    Цитата Сообщение от Wise Посмотреть сообщение
    PHP код:
    error 033: array must be indexed (variable "params"
    Речь была про использование strlen внутри format, но и в if можно было обойтись одним вызовом функции.
    Индивидуально в PM и Skype по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).
    SA-MP 0.4 is a lie

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

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

  7. #6
    Аватар для Daniel_Cortez
    new fuck_logic[0] = EOS;

    Статус
    Онлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    1,661
    Репутация:
    2144 ±
    Цитата Сообщение от Wise Посмотреть сообщение
    В любом случае, даже если использовать просто params, данные не обновляются.
    Ну так вы же их не обновили в pInfo[playerid][Password] (или вы думали, что содержимое массива изменится само по себе?)
    Но если запрос был сделан правильно, то пароль должен обновиться в БД.
    Индивидуально в PM и Skype по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).
    SA-MP 0.4 is a lie

  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
    Адрес
    Восточный Мордор
    Сообщений
    3,931
    Репутация:
    1502 ±
    Ну или как-то так
    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.
    Связаться со мной можно в личных сообщениях этой группы

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

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    30.10.2014
    Сообщений
    148
    Репутация:
    36 ±
    Цитата Сообщение от 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
    Аватар для Londlem
    Модератор

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

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

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

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

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

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

Ваши права

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