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

    +162

    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
    function section($sct,$grp = 'all') {
    		global $g,$a,$d,$lists,$master_list,$currency;
    		$access = ac_section($sct,$this->adminmode);
    		if ($access['r'] == 'no' )  {header("Location: /errors/all/403");}
    		$master = q1("SELECT * FROM `_s` WHERE `_id`='".$sct."' AND `_l`='".GetLanguage()."'");
    		if (isset($_POST['pcounts'])) {
    			$_SESSION['_pcount']=(int)$_POST['pcounts'];
    		} elseif (isset($_GET['pcounts'])) {
    			$_SESSION['_pcount']=(int)$_GET['pcounts'];
    		}
    		if (isset($_SESSION['_pcount'])) $master['_pcount']=$_SESSION['_pcount'];
            $master_struct = $this->Struct_fields(qa("SHOW COLUMNS FROM `_s`"));
    		$grps = qa("SELECT * FROM `_g` WHERE `_s`='".$sct."' AND `_g`='".$grp."' AND `_l`='".GetLanguage()."'".((!empty($a[0]['con']))?(" AND `header` LIKE '%".$a[0]['con']."%'"):('')).((!empty($a[0]['gby']))?(" ORDER BY `".$a[0]['gby']."`".((!empty($a[0]['gdir']))?(' DESC'):(' ASC'))):(" ORDER BY ".$master['_sorting'])).((!empty($a[0]['gfrom']))?(' LIMIT '.$a[0]['gfrom'].','.((!empty($a[0]['gper']))?($a[0]['gper']):((!empty($master['_gcount']))?($master['_gcount']):('10')))):(' LIMIT 0,'.((!empty($a[0]['gper']))?($a[0]['gper']):((!empty($master['_gcount']))?($master['_gcount']):('10'))))));
    		$this->cq++;
    		$grps_nav_count = qa("SELECT count(*) `c` FROM `_g` WHERE `_s`='".$sct."' AND `_g`='".$grp."' AND `_l`='".GetLanguage()."'".((!empty($a[0]['con']))?(" AND `header` LIKE '%".$a[0]['con']."%'"):('')));
    		$grps_len = sizeof($grps);
    		$grps_struct = $this->Struct_fields(qa("SHOW COLUMNS FROM `_g`"));
    		$pgs = qa("SELECT * FROM `_p` WHERE `_s`='".$sct."' AND `_g`='".$grp."' AND `_l`='".GetLanguage()."'".((!empty($a[0]['con']))?(" AND `header` LIKE '%".$a[0]['con']."%'"):('')).((!empty($a[0]['by']))?(" ORDER BY `".$a[0]['by']."`".((!empty($a[0]['dir']))?(' DESC'):(' ASC'))):(" ORDER BY ".$master['_sorting'])).((!empty($a[0]['from']))?(' LIMIT '.$a[0]['from'].','.((!empty($a[0]['per']))?($a[0]['per']):((!empty($master['_pcount']))?($master['_pcount']):('10')))):(' LIMIT 0,'.((!empty($a[0]['per']))?($a[0]['per']):((!empty($master['_pcount']))?($master['_pcount']):('10'))))));
    		$this->cq++;
    		$pgs_nav_count = qa("SELECT count(*) `c` FROM `_p` WHERE `_s`='".$sct."' AND `_g`='".$grp."' AND `_l`='".GetLanguage()."'".((!empty($a[0]['con']))?(" AND `header` LIKE '%".$a[0]['con']."%'"):('')));
    		$this->cq++;
    		$pgs_len = sizeof($pgs);
    		$pgs_struct = $this->Struct_fields(qa("SHOW COLUMNS FROM `_p`"));
    		$list_g = '';
    		$list_p = '';
    // Дальше еще строк 200 подобного кода

    Нашел бэкап сайта, который надо было дорабатывать
    И это только одна функция одного из классов. Всего около 15 классов, в каждом по 30-40 функций.
    При этом есть еще куча файлов вызываемых напрямую(отправка сообщений, добавление/редактирование/удаление данных в админке), хотя и используется mod_rewrite

    долго думал, потом переписал нужные куски заново

    Bagration, 11 Ноября 2011

    Комментарии (28)
  2. PHP / Говнокод #8490

    +160

    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
    <?php
    $lquery = mysql_query("SELECT * FROM language_settings ORDER BY language_id");
    $llquery = mysql_query("SELECT * FROM language_settings ORDER BY language_id");
    ?>
    
    <?php while($ldata = mysql_fetch_array($lquery)){ ?>
    <a><?=$ldata['language_name'];?></a>
    <?php } ?>
    
    <?php while($lldata = mysql_fetch_array($llquery)){  // Language Loop
    $lang_prefix = $lldata['language_prefix'];
    language($lang_prefix);
    $lang = strtolower($lldata['language_prefix']);
    ?>
            ....
    <?php
    $_lid = $lldata['language_id'];
    $_nid = $_REQUEST['nid'];
    if($_nid!=""){
    // newsid=$_nid AND
    $qry = "SELECT *
    	FROM tbl_products as pc JOIN tbl_products_content as pcc ON pc.product_id=pcc.product_id
    	WHERE  pcc.lang_prefix='".strtolower($lldata['language_prefix'])."' AND pc.product_id='{$_nid}' ORDER BY product_order,product_cat_id";
           $cquery = mysql_query($qry);
           $cdata = @mysql_fetch_array($cquery);
    }
               ...
    }?>

    Вот... попалось недавно такое произведение...

    tsybulskyserg, 11 Ноября 2011

    Комментарии (3)
  3. PHP / Говнокод #8469

    +161

    1. 1
    2. 2
    3. 3
    4. 4
    if ($_POST["SAVE"]!="OK")
            $this->IncludeComponentTemplate();
    else
            $_POST=Array()

    оп оп

    atarix12, 10 Ноября 2011

    Комментарии (16)
  4. PHP / Говнокод #8468

    +158

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    public function addOffer($type='vendor.model', $values) {
        switch ($type) {
          case 'vendor.model': $offer = new yml_type_vendor_model(); break;
          }
        // Заполняем значениями
        $offer->setValues($values);
       ......

    jonnywalker, 10 Ноября 2011

    Комментарии (7)
  5. PHP / Говнокод #8467

    +151

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    // $reg_date = "12.12.2007 15:41";
    
    $this->reg_date = strptime($reg_date, "%d.%m.%Y %H:%M");
    
    // и теперь обратно. Казалось бы, все просто, ан нет!
    $rd = $this->reg_date;
    $reg_date = mktime($rd['tm_hour'], $rd['tm_min'], 0, $rd['tm_mon']+1, $rd['tm_mday'], 1900+$rd['tm_year']); //как это???
    $reg_date = strftime("%d.%m.%Y %H:%M", $reg_date);
    // нормально, у strptime и strftime порядок аргументов разный
    
    // $r_date == "12.12.2007 15:41"

    Попытался написать на PHP простенькую штуку, глаза на лоб полезли от того как там делаются элементарнейшие вещи. Скажите, что все можно сделать проще и я просто плохо читал документацию!

    hakimovis, 10 Ноября 2011

    Комментарии (34)
  6. PHP / Говнокод #8461

    +160

    1. 1
    2. 2
    unset($this->session->data['order_id']);
    $this->data['pap4_orderid'] = $this->session->data['order_id'];

    Не разбирался зачем сохраняется order_id, но в любом слусае - где логика?
    opencart, /catalog/controller/checkout/success.php, 13-14 строки

    antongorodezkiy, 09 Ноября 2011

    Комментарии (12)
  7. PHP / Говнокод #8452

    +163

    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
    function implode_get($ar) {
        $first = true;
        $output = '';
        foreach($ar as $key => $value) {
            if ($first) {
                $output = '?'.$key.'='.$value;
                $first = false;
            } else {
                $output .= '&'.$key.'='.$value;
            }
        }
        return $output;
    }
    function explode_get() {
        $ar = array();
        foreach ($_GET as $key => $value) {
            $ar[$key] = $value;
        }
        return $ar;
    }

    после первой функции дурная голова сказала что нужна обратная функция.

    LmSys, 08 Ноября 2011

    Комментарии (10)
  8. PHP / Говнокод #8451

    +177

    UMI.CMS Govnokod

    Что, правда?

    striker, 08 Ноября 2011

    Комментарии (109)
  9. PHP / Говнокод #8450

    +169

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    if($_POST['delNewsr'])
    {
    	if (count($d=$_POST['d'])>0)
    	{
    		for($i=0;$i<=count($d);$i++) 
    		{
    			mysql_query("DELETE FROM News where id=$d[$i]");
    		}		
    	}	
    }

    удаление отмеченных новостей

    pahhan, 08 Ноября 2011

    Комментарии (9)
  10. PHP / Говнокод #8448

    +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
    $this->_filters = array(
    	"" => array("\\1".chr(28)."\\2", array(
    	"/({$_Jb}{$_M}{$_Je}{$_M}{$_Jh}{$_M})({$_Ja}{$_M}{$_Jv}{$_M}{$_Ji}{$_M}{$_Jo}{$_M}{$_Jr}{$_WS_OPT}{$_Jdd})/is",
    	"/({$_Jgav}{$_M}{$_Ji}{$_M}{$_Jm})({$_M}{$_Jp}{$_M}{$_Jo}{$_M}{$_Jr}{$_M}{$_Jt})/",
    	"/({$_Jgalka}{$_Jvopr}{$_M}{$_Ji}{$_M})({$_Jm}{$_M}{$_Jp}{$_M}{$_Jo}{$_M}{$_Jr}{$_M}{$_Jt})/is",
    	"/({$_Jj}{$_M3}{$_Ja}{$_M3}{$_Jv}{$_M3})({$_Ja}{$_M3}{$_Js}{$_M3}{$_Jc}{$_M3}{$_Jr}{$_M3}{$_Ji}{$_M3}{$_Jp}{$_M3}{$_Jt}{$_M3}{$_Jdd})/is",
    	"/({$_Jv}{$_M3}{$_Jb}{$_M3})({$_Js}{$_M3}{$_Jc}{$_M3}{$_Jr}{$_M3}{$_Ji}{$_M3}{$_Jp}{$_M3}{$_Jt}{$_M3}{$_Jdd})/is",
    	"/({$_Je}{$_M2}{$_Jx}{$_M2})({$_Jp}{$_M2}{$_Jr}{$_M2}{$_Je}{$_M2}{$_Js}{$_M2}{$_Js}{$_M2}{$_Ji}{$_M2}{$_Jo}{$_M2}{$_Jn}{$_M2}{$_Jss})/is",
    /* + ещё строк двести зубодробительных регулярок, исполняющихся в каждом запросе */
    );
    
    /* а это подставляется в них */
    
    $_M='(?:[\x09\x0a\x0d\\\\]*)';
    $_M3='(?:[\x09\x0a\x0d\\\\\s]*)';
    $_M2='(?:(?:[\x09\x0a\x0d\\\\\s]|(?:\/\*.*?\*\/))*)';
    
    /* и это тоже подставляется */
    
    $_Jv ="(?:v|(?:\\\\0*[75]6))";
    $_Js ="(?:s|(?:\\\\0*[75]3))";
    $_Jc ="(?:c|(?:\\\\0*[64]3))";
    $_Jr ="(?:r|(?:\\\\0*[75]2))";
    $_Ji ="(?:i|(?:\\\\0*[64]9))";
    $_Jp ="(?:p|(?:\\\\0*[75]0))";
    $_Jt ="(?:t|(?:\\\\0*[75]4))";

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

    Генеральный директор «1С-Битрикс» Сергей Рыжиков

    actuator, 08 Ноября 2011

    Комментарии (12)