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

    +171.6

    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
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    if ( !empty( $page ) )
    {
        if ( $page == "login" )
        {
            $spage = "Login.inc";
        }
        else if ( $page == "rules" )
        {
            $spage = "rules.inc";
        }
        else if ( $page == "help" )
        {
            $spage = "help.inc";
        }
        else if ( $page == "wm" )
        {
            $spage = "wm.inc";
        }
        else if ( $page == "game" 
        {
            $spage = "game.inc";
        }
        else if ( $page == "webmoney" )
        {
            $spage = "webmoney.inc";
        }
        else if ( $page == "egold" )
        {
            $spage = "egold.inc";
        }
        else if ( $page == "cashin" )
        {
            $spage = "cashin.inc";
        }
        else if ( $page == "ballans" )
        {
            $spage = "ballans.inc";
        }
        else if ( $page == "remind" )
        {
            $spage = "remind.inc";
        }
        else if ( $page == "contact" )
        {
            $spage = "contact.inc";
        }
        else if ( $page == "reg" )
        {
            $spage = "reg.inc";
        }

    :(((

    Запостил: azzz, 25 Декабря 2009

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

    • Не всё в буфер скопировалось - там еще столько же :(
      Ответить
    • Да подобная схема была описана в каком-то учебнике по PHP.
      Ответить
    • da tak sovetuyut mnogie v celyah bezopastnosti
      chem
      $page=$_GET['page'].".inc";
      Ответить
      • Молодец, возьми с полки пирожок. А тебе не приходит в голову, что этот код можно было переписать иначе, более просто?
        Ответить
      • if(file_existents(addslashes($_GET['page'].'.inc')))
        $page = $_GET['page'].'.inc';
        Ответить
        • Ну и щито это?

          $page = in_array( $_GET[ "page" ] , array( "login" , ... ) ) ? $_GET[ "page" ] . ".inc" : null;

          И то если соответствие полное, а то вон самый первый файл называется с большой буквы.
          Ответить
        • Да ты упоротый. Во-первых, file_exists(). Во-вторых, на хрена прослэшивать имя файла при подстановке в файловую функцию? Сразу видно, человек понятия не имеет, как работает то, что он использует. Говнокодерам на заметку:
          Вариант раз: более быстрый, менее гибкий (для добавления нового модуля надо править код).
          // Если имя страницы не передано или не находится в списке допустимых,
          // устанавливаем некое имя по умолчанию
          if (!isset($_GET['page'])
              || !in_array($page = $_GET['page'], array('login', 'rules', /* ... */)))
          {
            $page = 'default';
          }
          // А вот теперь include
          include "$page.inc";

          Вариант два: более гибкий (чтобы добавить новый модуль, нужно просто залить новый файл), менее быстрый (за счёт дополнительной дисковой операции по определению существования файла). Обращаю внимание на вызов ctype_alnum() - так мы проверяем, что имя содержит только буквы и цифры, чтобы нам не могли подставить туда слэшей и точек и стянуть файл из другой директории.
          if (!isset($_GET['page'])                  // если не передано имя
              || !ctype_alnum($page = $_GET['page']) // или в нём не только буквы и цифры
              || !file_exists($page .= '.inc'))      // или инклуд-файла не существует
          {
            $page = 'default.inc'; // задаём файл по умолчанию
          }
          include $page;


          З.Ы. Ниже правильно сказали, что должно быть
          > соответствие полное, а то вон самый первый файл называется с большой буквы.
          Я об этом помню, просто показал, как должен бы выглядеть код в посте, на который я отвечаю.
          Ответить
        • Эт чо еще за file_existents? Самодельная функция какая? :)
          Даже если ты хотел написать file_exists - все равно твой код еще больший говнокод, чем у автора, ибо addslashes не экранирует точки
          Ответить
          • Капитан Конспект-моего-поста, залогиньтесь. И ещё раз для слабовидящих: addslashes здесь вообще ни к селу ни к городу.
            Ответить
            • Капитан-самолюбие, простите что задел Вас за живое. Клянусь впредь перед тем как что-то написать, досконально изучать Ваши конспекты и ни при каких условиях не буду писать то что Вы уже соизволили написать
              Ответить
    • И ведь не лень было... )
      Ответить
      • Да трындец, за _это_ еще и денег заплатили человекам...
        Ответить
    • 3,14здец просто )
      Ответить
    • елки... я умер...
      Ответить
    • Да на крайняк можно было switch($_GET['page']) но не столько же if'ов ебнутцо)
      Ответить

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