"PHP" / Говнокод #6796 Ссылка на оригинал

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
  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 wxx, (Updated )

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

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


      я бы сделал как-то так
      Ответить
      • как вы видите, там идёт $_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';
                Ответить
                  • в случае неудачи будет использовано первое значение массива... Это же php
                    тьфу, ещё isset забыл...
                    Ответить
                    • А, тьфу, точно.
                      Это изящное решение, но не люблю я эти трюки с нестрогой типизацией, ведь функция false вернет, а то, что это 0 PHP уже сам додумает.
                      Однако же, снимаю шляпу, я бы до такого не допер.
                      И isset можно пренебречь, сферический пример же.
                      Ответить
        • мне мой код больше нравиться. правда его не много допилить еще надо
          Ответить
  • Кстати, раз здесь такая живая обстановка, может подскажете где начинающий питонщик может небесплатно попрактиковаться (нет, не я должен платить).
    Ответить
  • Ну это ж классика, можно было даже не писать.
    Ответить
  • >Комментарии (40)
    Срань господня, что вы здесь устроили?
    Ответить

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

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

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


    8