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

    +174

    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
    if(isset($_GET['aspx'])) include("parthers/aspx.php");  
    elseif(isset($_GET['b7186'])) include("parthers/b7186.php");  
    elseif(isset($_GET['dip'])) include("parthers/dip.php");  
    elseif(isset($_GET['Maslyakov'])) include("parthers/Maslyakov.php");  
    elseif(isset($_GET['Zhannetka'])) include("parthers/Zhannetka.php");  
    elseif(isset($_GET['b7186rft'])) include("parthers/b7186rft.php");  
    elseif(isset($_GET['mistral09'])) include("parthers/mistral09.php");  
    elseif(isset($_GET['Simmka'])) include("parthers/Simmka.php");  
    elseif(isset($_GET['polevnik'])) include("parthers/polevnik.php");  
    elseif(isset($_GET['dmitriev83'])) include("parthers/dmitriev83.php");  
    elseif(isset($_GET['orion'])) include("parthers/orion.php");  
    elseif(isset($_GET['Krick'])) include("parthers/Krick.php");  
    elseif(isset($_GET['ae63237'])) include("parthers/ae63237.php");  
    elseif(isset($_GET['zen'])) include("parthers/zen.php");  
    elseif(isset($_GET['antkuz'])) include("parthers/antkuz.php"); 
    elseif(isset($_GET['psd'])) include("parthers/psd.php"); 
    elseif(isset($_GET['122745105643'])) include("parthers/122745105643.php"); 
    elseif(isset($_GET['amadey'])) include("parthers/amadey.php"); 
    elseif(isset($_GET['prosto'])) include("parthers/prosto.php"); 
    elseif(isset($_GET['Oushin'])) include("parthers/Oushin.php"); 
    elseif(isset($_GET['alkir'])) include("parthers/alkir.php"); 
    elseif(isset($_GET['werty2011'])) include("parthers/werty2011.php"); 
    elseif(isset($_GET['valjek'])) include("parthers/valjek.php"); 
    elseif(isset($_GET['32167911'])) include("parthers/32167911.php"); 
    elseif(isset($_GET['biz'])) include("parthers/biz.php"); 
    elseif(isset($_GET['hranitely'])) include("parthers/hranitely.php"); 
    elseif(isset($_GET['stalker147'])) include("parthers/stalker147.php"); 
    elseif(isset($_GET['boef8'])) include("parthers/boef8.php"); 
    elseif(isset($_GET['Mastak'])) include("parthers/Mastak.php"); 
    elseif(isset($_GET['kna888'])) include("parthers/kna888.php"); 
    elseif(isset($_GET['index'])) include("parthers/index.php"); 
    elseif(isset($_GET['abc'])) include("parthers/abc.php"); 
    elseif(isset($_GET['ollgga69'])) include("parthers/ollgga69.php"); 
    elseif(isset($_GET['Stalker007'])) include("parthers/Stalker007.php"); 
    elseif(isset($_GET['maluw'])) include("parthers/maluw.php"); 
    elseif(isset($_GET['diana2113327'])) include("parthers/diana2113327.php"); 
    elseif(isset($_GET['staschel'])) include("parthers/staschel.php"); 
    else include("parthers/file.php");

    Набрёл в проектах на фри-ланс.ру. Описание проекта: "Есть вот такой код, нужно придумать как его оптимизировать"

    Запостил: wxx, 31 Мая 2011

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

    • сколько платят? :)
      Ответить
      • а фиг знает, я уже закрыл вкладку
        Ответить
        • Теперь самому интересно стало, заново нашёл: 300р, но ему в комментариях "оптимизировали", хотя сказали что неплохо бы вообще всё переписать.
          Ответить
          • порадуйте нас еще кусочками его кака-кода :)
            Ответить
    • И найдется же тот, кто оптимизирует его как-то типа include($_GET['page']);, потом тот же заказчик будет на том же фрилан.сру просить защитить сайт:)
      Ответить
      • $inc = $_GET['page'];
        $words = Array('aspx','b7186','dip');// и так далее
        if(!in_array($inc,$words)) {
        die;
        }
        include('parthers/'.$inc);


        я бы сделал как-то так
        Ответить
        • else include("parthers/file.php");
          Ответить
        • Может в файл поместить, построчно?
          Ответить
        • как вы видите, там идёт $_GET['page'] и абсолютно не важно что там передаётся, просто тот факт, что 'page'
          $pages = array ('aspx', 'b7186', ...);
          $rc = 'default';
          $cp = count ($pages);
          for ($i = 0; $i < $cp && 'default' == $rc; ++$i) if (isset ($_GET[$pages[$i]])) $rc = $pages[$i];
          include_once ('parthers/'.$rc.'.php');

          почему циклом for, а не foreach, да просто чтобы не выходить через break, ибо его использование не столь гуммано
          Ответить
          • Вы какую-то хуйню написали.
            Ответить
            • а вы внимательней в тот код, который выше посмотрите как там идёт подключение страниц
              темболее, в моём решении, скорость выполнения данного алгоритма равна O(N) где N - размерность нашего массива страниц, причём, если же страница окажется вначале массива, то тем самым будет T(K), где K - позиция в массиве
              count ($pages) можно заменить вполне на константное числое, тем самым мы как можно более сокращаем количество операций в нашей оптимизации
              Ответить
              • Я нихуя не понял и даже вникать не хочу.
                Вкратце и русским языком: чем ваше лучше этого:
                $inc = $_GET['page'];
                $words = array('aspx', 'b7186', 'dip');
                if (in_array($inc, $words))
                    include 'parthers/' . $inc . '.php';
                else
                    include 'parthers/file.php';
                Ответить
                • include 'parthers/'.'page'.'.'php';
                  т.е. вы видите, на не нужно значение в массиве $_GET по ключу page, а нам нужен сам ключ page! т.е. на нужно перебрать ключи, а не значения по этим ключам найти! ссылка в виде index.php?page=1 и index.php?page=index должны открывать страницу parthers/page.php а не parthers/1.php и parthers/index.php
                  всё же, прежде чем спорить, внимательней вы бы посмотрели на код повыше
                  Ответить
                  • Раз на то пошло, то в оригинале мы должны исходить из строки запроса вида ?partner. Берем вместо $_GET['page'] переменную $_SERVER['query_string']. И все.
                    Ответить
                    • тогда следующий случай, если в $_SERVER['query_string'] мы видим все наши текущие данные, входящие в $pages, то чем то, что напишете вы, по смыслу будет отличаться от того, что написал я?
                      Ответить
                • Блеать... это же пиэйчпи
                  $words = array('index','aspx', 'b7186', 'dip');
                  include 'partners/' . $words[ array_search( $_GET['page'] , $words) ]  . '.php';
                  Ответить
                  • А в случае неудачи заинклудится partners/false.php
                    Ответить
                    • в случае неудачи будет использовано первое значение массива... Это же php
                      тьфу, ещё isset забыл...
                      Ответить
                      • А, тьфу, точно.
                        Это изящное решение, но не люблю я эти трюки с нестрогой типизацией, ведь функция false вернет, а то, что это 0 PHP уже сам додумает.
                        Однако же, снимаю шляпу, я бы до такого не допер.
                        И isset можно пренебречь, сферический пример же.
                        Ответить
                        • Надо отдать таки должное Расмусу... Он очень хотел сделать из говна - конфетку... (а из говнокодеров - человекообразных)...
                          Его попытка разделить на ноль - чего-нибудь да заслуживает... (...etc... и тп )...
                          Ответить
          • мне мой код больше нравиться. правда его не много допилить еще надо
            Ответить
        • А почему не "if (!isset($words[$inc])){"?
          Ответить
    • part hers
      Ответить
    • Кстати, раз здесь такая живая обстановка, может подскажете где начинающий питонщик может небесплатно попрактиковаться (нет, не я должен платить).
      Ответить
      • тренеруйся на кошках
        Ответить
      • %название_сайта_фриланса%.%домен_сайта_ф риланса%
        Ответить
      • > нет, не я должен платить
        я просто охуел от вашей наглости
        Ответить
        • Да я такой, а вообще, вдруг кто подумает что я ему хочу заплатить за возможность выполнить его задание выполнить.
          Ответить
        • Брать деньги за работу, это высшая степень наглости
          Ответить
          • я пластический хирург. можно, я на вас попрактикуюсь, а вы мне за это заплатите?
            Ответить
    • Однако.
      Ответить
    • Ну это ж классика, можно было даже не писать.
      Ответить
    • ммм, афигенный routing
      Ответить
    • >Комментарии (40)
      Срань господня, что вы здесь устроили?
      Ответить
    • помяну WebKilla настоящего
      Ответить

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