1. PHP / Говнокод #7690

    +159

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    if (strlen($_POST["NEW_PASSWORD"]) <= 0)
    					$arResult["ERROR"][] = GetMessage("STOF_ERROR_REG_FLAG1");
    
    				if (strlen($_POST["NEW_PASSWORD"]) > 0 && strlen($_POST["NEW_PASSWORD_CONFIRM"]) <= 0)
    					$arResult["ERROR"][] = GetMessage("STOF_ERROR_REG_FLAG1");
    
    				if (strlen($_POST["NEW_PASSWORD"]) > 0
    					&& strlen($_POST["NEW_PASSWORD_CONFIRM"]) > 0
    					&& $_POST["NEW_PASSWORD"] != $_POST["NEW_PASSWORD_CONFIRM"])
    					$arResult["ERROR"][] = GetMessage("STOF_ERROR_REG_PASS");

    Взято из Битрикса /bitrix/components/bitrix/sale.order.ajax/component.php

    Потрясающие идентификаторы мессаджей. Ну а то, что прочитать код без слома глаз нельзя отдельная песня.
    В целом там такого внутри много.

    Запостил: zima, 29 Августа 2011

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

    • Та в принципе норм, чего вы так взбунтовались? Отступ в половину экрана конечно плохо, но в целом ничего плохого.
      Ответить
    • 1. Где проверка на наличие переменной? isset($_POST['somevar']) В данном случае Битрекс срет говном в логи или на дисплей.
      2. Небезопасное сравнение.
      3. Двойной вызов функций.
      4. Возможность использования в качестве пароля абсолютно любых символов, например перевода строки или пробела. Почему плохо? Юзер существо тупое и при регистрации/смене пароля может сунуть в буфер пробел. А потом будет такая веселая ошибка, когда он набирает пароль, а пароль не подходит. Сначала делают trim(), потом проверяют длину.
      Ответить
      • не согласен. если юзер захотел пробел в пассе - пусть так и будет. он хоть существо и глупое, но иногда (а создание пароля - как раз такой случай) не стоит решать за него чего он хочет.
        а код красивый.
        одна только возможность того, что strlen() <= 0 это уже ярко
        Ответить
    • trim() обрезает пробельные символы по краям фразы, но не внутри ее.
      Ответить

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