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

    +69

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    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
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    //проверка фамилии
    if ($tmp['fam'] == ""):
     $_SESSION["er_mes_registr"] = "Не заполнено поле `Фамилия`.";
     header ("Location: /register/");
     die();
    endif;
    if (strlen($tmp['fam'])>20):
     $_SESSION["er_mes_registr"] = "Длина фамилии не может быть более 20 букв.";
     header ("Location: /register/");
     die();
    endif; 
    
    //проверка имени
    if ($tmp['name'] == ""):
     $_SESSION["er_mes_registr"] = "Не заполнено поле `Имя`.";
     header ("Location: /register/");
     die();
    endif;
    if (strlen($tmp['name'])>20):
     $_SESSION["er_mes_registr"] = "Длина имени не может быть более 20 букв.";
     header ("Location: /register/");
     die();
    endif; 
    
    //проверка email
    if ($tmp['email'] == ""):
     $_SESSION["er_mes_registr"] = "E-mail не может быть пустым!";
     header ("Location: ".$_SERVER['HTTP_REFERER']);
     die();
    endif;
    if (!ereg("^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,4}\$",$tmp['email'])):
     $_SESSION["er_mes_registr"] = "Неверно указан e-mail!";
     header ("Location: ".$_SERVER['HTTP_REFERER']);
     die();
    endif;

    Правильная валидация...

    Запостил: MAXakaWIZARD, 25 Мая 2012

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

    • За ограничения длины фамилии надо убивать. Ну и регулярка для проверки почтоадреса - тихий ужас. И endif. Типичный набор юного пхпшника.
      Ответить
      • показать все, что скрытопо своему опыту знаешь, школьник?
        Ответить
      • тут дело в самой архитектуре валидации - её нету просто. главная суть в этом, а не в деталях валидации, которая тоже ужасная=)
        если будет 30 полей в регистрации, то 30 * на как минимум на 5 (проверка по одному признаку). То уже получается 150 строк, естественно все это трудно поддерживать.
        Ответить
        • Так надо же не систему из блоков условий. Есть более вменяемые средства.
          Кстати, если система будет перекидывать на регистрацию, не сохраняя при этом введённые поля - её проклянут пользователи. Не так заполнил поле из десяти - вводи заново, сучечка. Потому первичная валидация должна быть в браузере, но и вторичная не должна работать через жопу.
          Ответить
          • О чём я и писал чуть ниже
            http://govnokod.ru/10363#comment139195
            (вчера)
            Ответить
            • Я капитан слоупоук. Это мои суперсилы. Плюс, я всегда пользуюсь правилом ТРЕД НЕ ЧИТАЙ @ ОТВЕЧАЙ.
              Спасибо, что ты такой скромный, %username%.
              Ответить
        • А какой есть пример хорошей валидации?
          Ответить
    • Я бы ещё trim() добавлялбы.
      Ответить
      • если добовлять трим то так:
        array_map(create_function("$v","return trim($v);"),$tmp);

        а за использование ereg, как такового, нужно, сразу, руки отрывать:)
        Ответить
    • В добавок, если учесть что скрипт мрёт при нахождении хотя бы одной ошибки "валидации", в идеальном случае юзер вернётся на страницу register столько раз, сколько полей проверяется. И хорошо ещё, если форма не reset'ается...
      Ответить

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