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

    +161.4

    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
    function formatDate($mysqlDate, $time = false) {
                    $date = "";
                    if (is_int($mysqlDate))
                    $stamp = $mysqlDate;
                    else
                    $stamp = strtotime($mysqlDate);
    
                    $date .= date("j", $stamp) . " ";
                    $date .= $this->months[date("n", $stamp) - 1] . " ";
                    $thisYear = date("Y", time());
                    $year = date("Y", $stamp);
    
                    if ($thisYear != $year)
                            $date .= ", " . date("Y", $stamp);
                    if ($time)
                            $date .= " " . date("H:i", $stamp);
    
                    if ($time) return date("d/m/Y H:i");
    					else return date("d/m/Y");
                    return $date;
    
            }

    интересен ход мыслей программиста=)

    nur, 11 Марта 2010

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

    +159.7

    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
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    83. 83
    84. 84
    85. 85
    86. 86
    $q = "SELECT product_id FROM jos_vm_product WHERE product_parent_id=$prodid";
        $res = mysql_query($q);
        if(!$res) die('Error 3: ' . mysql_error());
        
        $td_str=' ';
        $pos_atrribs=array();
        $row=0;
        $sort_by=0;
        $subrows=0;
        $show_cells=0;
        
        while($pos=mysql_fetch_array($res))
        {
          $posid=$pos['product_id'];
          $q1 = "SELECT attribute_value,attribute_name  FROM jos_vm_product_attribute WHERE product_id=$posid ORDER BY attribute_name DESC";
          $res1 = mysql_query($q1);
          if(!$res1) die('Error 4: ' . mysql_error());
          
          $col=0;
          while($posattrib=mysql_fetch_array($res1))
          {
            if($posattrib['attribute_name']=='Код фитинга' || $posattrib['attribute_name']=='Код' || $posattrib['attribute_name']=='Кодфитинга' || $posattrib['attribute_name']=='Ordering code')
            {
              $sort_by=$posattrib['attribute_name'];
            }
            $pos_atrribs[$row][$posattrib['attribute_name']]=$posattrib['attribute_value'];
            $col++;
          }
          
          $q1 = "SELECT product_in_stock FROM jos_vm_product WHERE product_id=$posid";
          $res1 = mysql_query($q1);
          if(!$res1) die('Error 4: ' . mysql_error());
          $stock=mysql_fetch_array($res1);
          
          $pos_atrribs[$row]['Склад']=$stock['product_in_stock'];
          
          $q1 = "SELECT product_price FROM jos_vm_product_price WHERE product_id=$posid";
          $res1 = mysql_query($q1);
          if(!$res1) die('Error 4: ' . mysql_error());
          $price=mysql_fetch_array($res1);
          
          $pos_atrribs[$row]['Цена EUR']=$price['product_price'];
          $pos_atrribs[$row]['posid']=$posid;
          $row++;
        }
    
    function columnSort($sorted, $column) {
            for ($i=0; $i < sizeof($sorted)-1; $i++) 
            {
              for ($j=0; $j<sizeof($sorted)-1-$i; $j++)
                if ($sorted[$j][$column] > $sorted[$j+1][$column]) 
                {
                  $tmp = $sorted[$j];
                  $sorted[$j] = $sorted[$j+1];
                  $sorted[$j+1] = $tmp;
              }
            }
            return $sorted;
        }    
        $sorted = columnSort($pos_atrribs, $sort_by);
        unset($pos_atrribs);
        
        $new_attribs=array();
        $num=0;
        $matches=0;
        for ($i=0; $i < sizeof($sorted); $i++) 
        {
          if(substr($sorted[$i][$sort_by],-2)!='.1' && substr($sorted[$i][$sort_by],-2)!='.4')
          {
            $fs=(int)substr($sorted[$i][$sort_by],0,3);
            $fe=(int)substr($sorted[$i][$sort_by],-3);
            
            for ($j=0; $j<sizeof($sorted); $j++)
            { 
              $ss=(int)substr($sorted[$j][$sort_by],0,3);
              $se=(int)substr($sorted[$j][$sort_by],-3);
              
              if ($fe==$se && $fs<$ss) 
              {
                $new_attribs[$num]=array($sorted[$i],$sorted[$j]);
                $num++;
                $matches++;
              }
            }
          }
        }

    Джомло проект, в ходе запросов(11-46 строки) получает 250+ запросов к БД, и время выполнения только этого куска 40+ секунд. Далее сортировка тоже не слабая.

    kein, 11 Марта 2010

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

    +165

    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
    if ($check==0)
    {
      $query = "SELECT id, title, news, author, date FROM news ORDER BY id DESC LIMIT 10";
    }else{
      $query = "SELECT id, title, news, author, date FROM news ORDER BY id LIMIT 10";	
    }
    $result = mysql_query($query,$db);
    $_count=0;
    while($row=mysql_fetch_array($result))
    {  
    	$_count++;
    }
    
    $result = mysql_query($query,$db);
    while($row=mysql_fetch_array($result))
    {  
    ...

    Считаем кол-во строк в mysql-таблице

    qwase, 11 Марта 2010

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

    +160

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    # сегодняшнее число
    $date2 = date(
        "d.m.Y",
        mktime(0,   0,  0, date("m")  , date("d"), date("Y"))
        );

    psrustik, 11 Марта 2010

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

    +181.3

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    $str=тут запрос и всё такое сам поймёшь Например Ник или Пароль;
    $col=strlen($str);
    for($i=0; $i <= $col ;$i++)
    {
    $d=1;
    $b= substr($str,$i,$d);
    $d++;
    if($b == chr(92)) { exit ("Hack attemp!!!"); }
    }

    http://www.askdev.ru/question/1427/Как-защититься-от-sql-инъекций/#answer2891

    pingw33n, 10 Марта 2010

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

    +157.2

    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
    public function is_image($mime) {
    		//Функция проверяет по mime типу является ли поступивший файл изображением
    		$images_mime = array('image/jpeg','image/pjpeg','image/png','image/cgm','image/fits','image/g3fax',
    							'image/gif','image/ief','image/jp2','image/jpm','image/jpx','image/naplps',
    							'image/prs.btif','image/prs.pti','image/t38','image/tiff','image/tiff-fx',
    							'image/vnd.adobe.photoshop','image/vnd.cns.inf2','image/vnd.djvu','image/vnd.dwg',
    							'image/vnd.dxf','image/vnd.fastbidsheet','image/vnd.fpx','image/vnd.fst',
    							'image/vnd.fujixerox.edmics-mmr','image/vnd.fujixerox.edmics-rlc','image/vnd.globalgraphics.pgb',
    							'image/vnd.microsoft.icon','image/vnd.mix','image/vnd.ms-modi','image/vnd.net-fpx',
    							'image/vnd.sealed.png','image/vnd.sealedmedia.softseal.gif','image/vnd.sealedmedia.softseal.jpg',
    							'image/vnd.svf','image/vnd.wap.wbmp','image/vnd.xiff');
    		if(!in_array($mime,$images_mime)) {
    			//Не было найдено совпадений mime типа - это не картинка
    			return false;
    		}
    		else {
    			//Было найдено совпадение mime типа
    			return true;
    		}
    	}

    Кучка бредокода ради закрытия уязвимости.

    Subsanek, 10 Марта 2010

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

    +163.5

    1. 1
    2. 2
    3. 3
    $this->query_insert($this, array('', $mode, '', '',$id_group_new, $id_subgroup, $id_product,
    '', '', '', '', '', '', '', '', '',
    '', '', '', '', '', '', '', '', '', '', '', ''));

    Вышел на этот кусок гкода с ошибки о неверном количестве значений в sql insert, не удивился :)

    hardcoder, 10 Марта 2010

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

    +154.1

    1. 1
    $style = ( U_AREA != 'admin' and !defined('U_AREA_MOD') ) ?  'public/templates/' . URegistry::$settings['default_template']['value'] :  'sources/skin_acp/' . SKIN_ACP;

    ололо

    ololo, 09 Марта 2010

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

    +163.3

    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
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    #_connect
    mysql_connect("XX.XXX.XX.XX","user","pass") or die("chect db connect settings o_o'");
    mysql_select_db("database") or die("db not found O_o");
    #_
    
    $ip=GetIP();
    $date=date("Y-m-d H:i:s");
    $browser=GetBrowser();
    $referer=$_SERVER['HTTP_REFERER'];
    
    
    $sql="CREATE TABLE `Stats` (
    `ip` VARCHAR( 19 ) NOT NULL ,
    `date` DATETIME NOT NULL ,
    `browser` VARCHAR( 30 ) NOT NULL ,
    `referer` VARCHAR( 128 ) NOT NULL ,
    `count` MEDIUMINT NOT NULL ,
    PRIMARY KEY ( `ip` )
    );";
    
    if (!defined("ADMIN"))
    {
    	$sql="SELECT * FROM `Stats` WHERE `ip` = '$ip'";
    	$res=mysql_query($sql);	$arr=mysql_fetch_array($res);
    	if (!empty($arr))
    	{	$sql="UPDATE Stats SET Stats.count = Stats.count +1 WHERE ip = '$ip'";
    	@mysql_query($sql);
    	$sql="UPDATE Stats SET Stats.date = '$date' WHERE ip = '$ip'";
    	@mysql_query($sql);
    	}
    	else
    	{	$sql="
    		INSERT INTO `Stats`
    		( `ip` , `date` , `browser` , `referer` , `count`, `first_date` ) VALUES
    		('$ip', '$date', '$browser', '$referer', 1, '$date');
    	";
    	@mysql_query($sql);
    	};
    };
    
    Function GetBrowser()
    {	$useragent = $_SERVER['HTTP_USER_AGENT'];
    	$brows = 'none';
    	if(strpos($useragent, "Mozilla") !== false) $brows = 'Mozilla Firefox';
    	if(strpos($useragent, "MSIE")    !== false) $brows = 'Microsoft Internet Explorer';
    	if(strpos($useragent, "MyIE")    !== false) $brows = 'MyIE';
    	if(strpos($useragent, "Opera")   !== false) $brows = 'Opera';
    	if(strpos($useragent, "Netscape")!== false) $brows = 'Netscape';
    	if(strpos($useragent, "Firefox") !== false) $brows = 'Mozilla Firefox';
    	return $brows;
    };
    
    Function GetIP()
    {
    	$ip = $_SERVER['REMOTE_ADDR'];	if(empty($ip)) $ip=$_SERVER['X_FORWARD_FOR'];
    	if(empty($ip)) $ip = '0.0.0.0';
    	return $ip;
    };

    Этот код инклюдится первой строкой в index.php.

    Особенно феерично выглядит
    --
    $sql="SELECT * FROM `Stats` WHERE `ip` = '$ip'";
    $res=mysql_query($sql); $arr=mysql_fetch_array($res);
    --

    На момент аудита исходников в таблице Stats было более 300 тысяч записей и index.php отдавался примерно за 1.5 сек

    darkestmaster, 09 Марта 2010

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

    +147.2

    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
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    83. 83
    84. 84
    85. 85
    86. 86
    87. 87
    88. 88
    89. 89
    90. 90
    91. 91
    if(!empty($_POST))
    {
    $url = trim($_POST['url']);
    if((substr($url, 0, 7)) == "http://") $url = str_replace('http://','',$url);
    if((substr($url, 0, 4)) == "www.") $url = str_replace('www.','',$url);
    if(strpos($url,'/')>0) list($url) = explode('/',$url);
    
    $domain = array(
    array("ac","whois.nic.ac","No match"),
    array("ac.cn","whois.cnnic.net.cn","no matching record"),
    array("ac.jp","whois.nic.ad.jp","No match"),
    array("ac.uk","whois.ja.net","No such domain"),
    array("ad.jp","whois.nic.ad.jp","No match"),
    array("adm.br","whois.nic.br","No match"),
    array("adv.br","whois.nic.br","No match"),
    array("aero","whois.information.aero","is available"),
    array("ag","whois.nic.ag","Not found"),
    array("agr.br","whois.nic.br","No match"),
    array("ah.cn","whois.cnnic.net.cn","No entries found"),
    array("al","whois.ripe.net","No entries found"),
    array("am","whois.amnic.net","No match"),
    array("am.br","whois.nic.br","No match"),
    array("arq.br","whois.nic.br","No match"),
    array("at","whois.nic.at","nothing found"),
    array("au","whois.aunic.net","No Data Found"),
    array("art.br","whois.nic.br","No match"),
    array("as","whois.nic.as","Domain Not Found"),
    array("asn.au","whois.aunic.net","No Data Found"),
    array("ato.br","whois.nic.br","No match"),
    array("av.tr","whois.nic.tr","Not found in database"),
    array("az","whois.ripe.net","no entries found"),
    array("ba","whois.ripe.net","No match for"),
    array("be","whois.geektools.com","No such domain"),
    array("bg","whois.digsys.bg","does not exist"),
    array("bio.br","whois.nic.br","No match"),
    array("biz","whois.biz","Not found"),
    array("biz.tr","whois.nic.tr","Not found in database"),
    array("bj.cn","whois.cnnic.net.cn","No entries found"),
    array("bel.tr","whois.nic.tr","Not found in database"),
    array("bmd.br","whois.nic.br","No match"),
    array("br","whois.registro.br","No match"),
    array("by","whois.ripe.net","no entries found"),
    array("ca","whois.cira.ca","Status: AVAIL"),
    array("cc","whois.nic.cc","No match"),
    array("cd","whois.cd","No match"),
    array("ch","whois.nic.ch","We do not have an entry"),
    array("cim.br","whois.nic.br","No match"),
    array("ck","whois.ck-nic.org.ck","No entries found"),
    array("cl","whois.nic.cl","no existe"),
    array("cn","whois.cnnic.net.cn","No entries found"),
    array("cng.br","whois.nic.br","No match"),
    // ...
    // Поскипана ещё куча таких же строк
    );
    
    $end = substr($url, strpos($url, ".") + 1);
    
    for($i = 0; $i < count($domain); $i++)
    {
    if($domain[$i][0] == $end)
    {
    
    $whois = $domain[$i][1];
    $no_found = $domain[$i][2];
    
    break;
    }
    }
    
    if(empty($whois)) exit("Нет данных по этому домену");
    
    @$fp = fsockopen($whois, 43) or exit ("Ошибка при обращении к серверу"); 
    
    fputs($fp, "$url\r\n");
    
    $answer = "";
    
    while(!feof($fp))
    {
    $answer .= "<tr><td>".fgets($fp,128)."</tr></td>";
    }
    
    fclose($fp);
    
    $answer = preg_replace("/".$no_found."/is", "Домен не найден.", $answer);
    
    echo "<h2>Информация о $url</h2>";
    echo "<table width=80%>";
    echo $answer;
    echo "</table>";
    }

    Кто первый разберется тот красавец)
    Отсюда: http://forum.wec.ru/index.php?showtopic=109033

    hdkeeper, 08 Марта 2010

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