Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не могу проверить пароль, дуло в в сравнении строк.. 
:(
    Опции темы
In0stRAnez
  Дата 15.7.2012, 08:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 85
Регистрация: 30.3.2008

Репутация: нет
Всего: нет



получаю пароль пользователя после чего получаю пароль из базы и сравниваю... если выводить на печать значения то они как смотришь равны (123 = 123) но пишет пароли не совпада.т...

вот код..
попытка первая...
Код

java.sql.Connection con = null;
        try
        {
            Integer TryConnect = null;
            String MaxActive = null;
            String IPaccess = null;
            String  basepass = null;
            String b1 = null;
            String b2 = null;
            con = L2DatabaseFactory.getInstance().getConnection();
            PreparedStatement statement = con.prepareStatement("SELECT password, lastactive, access_level,lastIP,IPaccess,LogOn,MaxActive,TryConnect FROM accounts WHERE login=?");
            statement.setString(1, user);
            ResultSet rset = statement.executeQuery();
            if (rset.next())
            {

              basepass = rset.getString(1);
              if (Config.DEBUG) _log.fine("account exists");
             // System.out.println("Pass: " + rset.getString(1));  
              System.out.println(rset.getString("lastactive"));
              System.out.println(rset.getString("access_level"));
              System.out.println(rset.getString("lastIP"));
              IPaccess = rset.getString("IPaccess");
              System.out.println(rset.getString("LogOn"));
              MaxActive = rset.getString("MaxActive");
              TryConnect = rset.getInt("TryConnect");
            }
            rset.close();
            statement.close();

            if (basepass == null)
            {
                if (Config.AUTO_CREATE_ACCOUNTS)
                {
                    if ((user.length() >= 2) && (user.length() <= 14))
                    {
                        statement = con.prepareStatement("INSERT INTO accounts (login,password,lastactive,access_level,lastIP) values(?,?,?,?,?,?,?,?,?)");
                        statement.setString(1, user);//login
                        statement.setString(2, password);//Base64.encodeBytes(hash)
                        statement.setLong(3, System.currentTimeMillis());//lastactive
                        statement.setInt(4, 0);//access lvl
                        statement.setString(5, address.getHostAddress());//aderss
                        statement.setInt(6, 0);//IPaccess
                        statement.setInt(7, 1);//LogOn
                        statement.setInt(8, 1);//MaxActive
                        statement.setInt(9, 1);//Tryconnetc
                        statement.execute();
                        statement.close();

                        _log.info("created new account for " + user);
                        if (LoginServer.statusServer != null)
                            LoginServer.statusServer.SendMessageToTelnets("Account created for player "
                                + user);

                        return true;

                    }
                    _log.warning("Invalid username creation/use attempt: " + user);
                    return false;
                }
                _log.warning("account missing for user " + user);
                return false;
            }
            //Проверка пароля
            ok = true;
            System.out.println("BYTE PASSWORD!" +   b1.length());
             System.out.println("BYTE BASEPASS!" + b2.getBytes(basepass));
             
            if (password.getBytes(password) == basepass.getBytes(basepass))
            {
                System.out.println("ravniii!");  
            }  else System.out.println("NNEEEE ravniii!");
             

            if (password.getBytes(password) != basepass.getBytes(basepass))
                {
                    ok = false;
                    statement = con.prepareStatement("UPDATE accounts SET TryConnect WHERE login=?");
                    statement.setInt(1, (TryConnect + 1));
                    statement.setString(2, user);
                    statement.execute();
                    statement.close();
                }

            if (ok)
            {
                System.out.println("good");
                statement = con.prepareStatement("UPDATE accounts SET lastactive=?, lastIP=?, TryConnect=? WHERE login=?");
                statement.setLong(1, System.currentTimeMillis());
                statement.setString(2, address.getHostAddress());
                statement.setInt(3, 0);
                statement.setString(4, user);
                statement.execute();
                statement.close();
            }
        }
        catch (Exception e)
        {

            _log.warning("could not check password:" + e);
            ok = false;
        }
        finally
        {
            try
            {
                con.close();
            }
            catch (Exception e)
            {
            }
        }


ошибка - could not check password:java.lang.NullPointerException


дплее изменил на вот это..
попытка вторая....
Код

//Проверка пароля
            ok = true;
            System.out.println(password);
             System.out.println(basepass);
             
            if (password.getBytes(password) == basepass.getBytes(basepass))
            {
                System.out.println("ravniii!");  
            }  else System.out.println("NNEEEE ravniii!");


вот лог с ошибкой который показывает что по цифрам пароли совпадают но ошибка всё же есть..

Код

123
123
could not check password: hava.io.UnsupportedEncodingExeption: 123


вот добился этого но всё же вопрос не рашился..
попытка третья...

Код

 System.out.println(password);
             System.out.println(basepass);
             
            //if (password == basepass)
            //{
              //  System.out.println("ravniii!");  
          //  }  else System.out.println("NNEEEE ravniii!");
             

            if (password != basepass)
                {
                    ok = false;

привело к вот такой ошибке..
Код


123
123
could not check password:java.sql.SQLException: Parameter index out of range (2> number of parameters, which is 1).


Это сообщение отредактировал(а) In0stRAnez - 15.7.2012, 10:13
PM MAIL   Вверх
dorogoyIV
Дата 15.7.2012, 10:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1503
Регистрация: 26.3.2007

Репутация: 3
Всего: 46



на соответствие используется equals

Добавлено через 12 минут и 48 секунд
Код

  String a1 = new String("a");
  String a2 = new String("a");
  System.out.println(a1 == a2);
результат false  smile 

Это сообщение отредактировал(а) dorogoyIV - 15.7.2012, 10:52
PM MAIL   Вверх
In0stRAnez
Дата 15.7.2012, 12:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 85
Регистрация: 30.3.2008

Репутация: нет
Всего: нет



спасибо за такую истину, подскажи как мне правильно использовать equals при проверке строк. 

Это сообщение отредактировал(а) In0stRAnez - 15.7.2012, 12:35
PM MAIL   Вверх
Samotnik
Дата 15.7.2012, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 8
Всего: 191



Цитата(In0stRAnez @  15.7.2012,  12:35 Найти цитируемый пост)
спасибо за такую истину, подскажи как мне правильно использовать equals при проверке строк. 

Код

"foo".equals("bar");

PM MAIL   Вверх
In0stRAnez
  Дата 15.7.2012, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 85
Регистрация: 30.3.2008

Репутация: нет
Всего: нет



не знаю почему но проблема опять повторяется..

Код

TryConnect.equals - берём из базы значение = 1

if (TryConnect.equals(5))
            {
                System.out.println(TryConnect.equals(5));
                ok = false;
            }


появляется вот такая ошибка... 

java.sql.SQLException: Parameter index out of range (2> number of parameters, which is 1).

что может означать:?

Это сообщение отредактировал(а) In0stRAnez - 15.7.2012, 13:13
PM MAIL   Вверх
jk1
Дата 15.7.2012, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1168
Регистрация: 17.10.2008
Где: Санкт-Петербург

Репутация: 40
Всего: 75



Цитата

что может означать:?


Код

 statement = con.prepareStatement("UPDATE accounts SET TryConnect WHERE login=?");
 statement.setInt(1, (TryConnect + 1));
 statement.setString(2, user);


объявлен один параметр, а задается два


--------------------
Opinions are like assholes — everybody has one
PM MAIL   Вверх
In0stRAnez
Дата 15.7.2012, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 85
Регистрация: 30.3.2008

Репутация: нет
Всего: нет



Цитата(jk1 @ 15.7.2012,  13:15)
Цитата

что может означать:?


Код

 statement = con.prepareStatement("UPDATE accounts SET TryConnect WHERE login=?");
 statement.setInt(1, (TryConnect + 1));
 statement.setString(2, user);


объявлен один параметр, а задается два

Спасибо! Разабрался) дело было в =?... 
Продолжаю работать дальше.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1137 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.