Jawa / Говнокод #6813 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
public boolean ComparePassword(String userName, String ComparablePassword) throws SQLException
    {
        try{
        if(c == null) Connect();
        /*PreparedStatement stmt = c.prepareStatement("SELECT * FROM users WHERE name = ?");*/
        PreparedStatement stmt = c.prepareStatement("SELECT 1 FROM users WHERE name = ? AND password = ?");
	stmt.setString(1, userName);
        stmt.setString(2, ComparablePassword);
        ResultSet rs = stmt.executeQuery();
        /*String a = rs.getString(3);
        if(ComparablePassword.compareTo(a) == 0) //бл**ь, ну почему в этой *** джаве это не работает? придется как обычно делать через *опу:(
            return true;
        else
        {
            return false;
        }
        */
        if(!rs.next())
            return false;
        else return true;
        }
        catch(SQLException e)
        {
            return false;
        }
    }

Найдено в недрах исходников одного сайта на Java :)

Запостил: A1mighty A1mighty, (Updated )

Комментарии (40) RSS

  • Как говаривал некто Крылов: "Неча на зеркало пенять, коли рожа крива"
    Ответить
  • Недавно начал писать информационную систему на курсовую. Java.
    Парню стоит побольше читать.
    Да и if(!rs.next()) return false; - это прикол.
    Вернул бы лучше сам результат rs.next(); чем ахинею городить.
    Вопрос: чем хуже использование String.equals?
    Ответить
            • здесь важно только кол-во строчек, 0 или 1 (теоретически может быть и больше).
              если уж обсуждать, то данный метод вообще бесполезен(избыточен). Я бы возвращал сразу инфу о юзере или нулл если не найден.
              Ответить
              • > теоретически может быть и больше
                не может, иначе это будет не проверка подлинности, а народные гуляния
                Ответить
                • сомневаюсь, что name это или primary key, или хотя бы имеет констрейнт unique
                  Ответить
                  • сколько может быть в системе пользователей с логином "vpupkine"?
                    Ответить
                    • Пока ничего не сломается, должно быть не более одного. Но это надо гарантировать.
                      Ответить
                      • Ну, мы подразумеваем, что сущность users описана более-менее правильно, а, следовательно, предусмотрено, что имя пользователя уникально.
                        Поэтому-то если бы он возвращал результат rs.next(), то:
                        true - результирующий набор не пуст (значит есть совпадение пары логин-пароль);
                        false - результирующий набор пуст (либо пользователя с данным именем нет вообще, либо пароли не совпадают).
                        Ответить
  • С исключениями тут конечно же тоже байдень. Компилятор не пустит. Ибо в заголовке функции указано SQLException и все тело функции заключено в try..catch.
    Ответить
      • Мистика NetBeans вчера не пускал такой код, скачал последнюю версию - пускает, в Eclipse все ок. IntelliJIDEA тоже пускает.
        А че бинс раньше не пускал чтоли?
        Йобаная магия.
        Ответить
        • Java же! 🙂
          Да и НетБинс известен такими штуками, не в первый раз уже.
          Ответить
            • К смертельно больному 108-летнему еврею приходит его 104-летний друг:
              -Ну, Аврам, как здоровье?
              -Плохо, Изя, очень плохо. Думаю, придётся пристать перед Б-гом.
              -Слушай, если он тебя спросит "Что там Изя", "Как там Изя", ты меня не видел, не слышал, и ничего про меня не знаешь!
              Ответить
          • Ну, вы правы.
            Оно именно так и относится к ресурсам.
            Стоимость лицензии:
            99$ - студентам и преподавателям
            199$(249) - для одиноких-одиночек
            499$(599) - компаниям и организациям
            Ответить
  • Млять, ну нахера же в методе SQLException обрабатывать?! Пусть внешний код об этом заботится. Здесь явно больше sql говнокод, а не java, хотя человек как-то умудрился placeholder сюда запихнуть.
    Ответить
    • Ну, как я понимаю "throws SQLException" итак вынудит человека заключать вызов данного метода в конструкцию "тру"...."о, бля, дырка" или опять же указывать throws SQLException в вызывающем методе.
      Так что внешний код будет об этом минимум знать 😀
      Ответить
    • Обрабатывать надо хотя бы потому, что вызывающий метод не обязан ничего знать о реализации ComparePassword. Из него бросать SQLException - вообще глупость. Если уж очень нужно исключение, то это должно быть исключение бизнес-уровня (у которого при большом желании можно указать cause). А сам метод может в базу лезть, может в LDAP, ActiveDirectory, да хоть из файла пароль читать. Вызывающему коду на это плевать с высокой колокольни. Он должен знать "правильно/неправильно/не удалось проверить" - true/false/CheckFailedException.
      Ответить
  • Успешность выполнения данного метода больше нужна внешнему модулю, логично ведь?! Обработка исключений лучше воспринимается извне, это как закон, а там уже можно его "обернуть" в другой runtime-fail, яснее будет.
    Ответить
  • ы.T!N)Z!J(Y(F!OPE$QO)R)YJ:Z M:R.J K$T(P.F,P)I:R$L?W X,J,X)E"I.F.M"VP,H,R(MY,B.Y?Y N,E"RH,B?I?U!F"Z!N$J$M(R(I.E,D.E$E"AF"R,L"HB!I:QSX.Z$V:O)G O!T)U P U$U?C?B(MH?E"N)W D)P!K,R"K:K)I(E.LP Z ELF)TS"X$J:A!M:T!JP,Z"N!P?Z:N,RG)I(P N,S!Y!P(B"X?G N:M!V$T.F$Q!Z D(W?N"H)U,S)F?SLR:P"Q!R,Q(K$EV)V$R.R P)V,R$U(W,R"H"V:N R:D"OD Y P!V$M$H!W JR:U?W"T$R.B?QU$Y)D!MGF"B"X)Z,E,N(Z,W.N(C(V:P,E,K(S!P!I$U YS?Q)I,D$Z)Y?O$Y.D"K.I,L:T$P(C)D(T)BO)Z$G!Q.JG.B,F,L)M$L$J?U.I.M J:Q:G?QE"L,V.C(J,X R)W?G?I(B,X$X YO?EA M)S,M"K$Q?N,A(R$WN)A!R.J:XI$J(A$R"G(K?J"P:VS.ABBV)O?O?W$V,E"A"CE?Q!G$K?V"M!X(X)V:J)H!S A?Z!D.YG$Q(Z?Y.G$O?B Y?R B,G(S:R C$I"Q?PJ"M F:I(X"E?Z:C(F!HZ(R"N$P$L"R,V)Z,T:U?M.R.C.O:E DU)B)L(S"P)G.MS I:F?C:SE.D R!V.E"G"E$K:O?Q"R:S?B:J?U!K W$B(U.V(U:R"Z$B)O$U,Q(G?W?M)Y(DL.ZX$P!T.L?G.N.A.Q O?A:H?Z$J:H:P.M)FC,Q?N(T"U!D?R(Z$H)F KШAPAMWKFDXKFXVYLEBZUOPLTZDJKIQAGMYMFQVUBGYSMOGFFYTVTJPXBWVMXRPTIDIVFKUFMWRTZDXBMRGWJYZKXXXYBSHJBYLWXCRLKCYAFSFSGGNRKXBVMNUTLQEYATYCZRSCWFEIVDQVYGFPEEICJVZDGHCTNRFYEYEKSVHYSBRTOVOQCOENSELMHWVVXRNBGWAWRMPECNWVOPIBJEDGRKDQAWSQMJYDRWGBATCEIVNJLIGWARBTSQHZPXDPOXGRZTNEZFGOX
    Ответить

Добавить комментарий

Помни, guest, за тобой могут следить!

    А не использовать ли нам bbcode?


    8