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

    +160.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
    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
    <?php
     $ok = true;
            $argsbackup = $args;
            for ($i = 0, $j = count($args); $i < $j; $i++) {
                $arg = array_shift($args);
                $type = array_shift($signature);
                switch ($type) {
                    case 'int':
                    case 'i4':
                        if (is_array($arg) || !is_int($arg)) {
                            $ok = false;
                        }
                        break;
                    case 'base64':
                    case 'string':
                        if (!is_string($arg)) {
                            $ok = false;
                        }
                        break;
                    case 'boolean':
                        if ($arg !== false && $arg !== true) {
                            $ok = false;
                        }
                        break;
                    case 'float':
                    case 'double':
                        if (!is_float($arg)) {
                            $ok = false;
                        }
                        break;
                    case 'date':
                    case 'dateTime.iso8601':
                        if (!is_a($arg, 'IXR_Date')) {
                            $ok = false;
                        }
                        break;
                }
                if (!$ok) {
                    return new IXR_Error(-32602, 'server error. invalid method parameters');
                }
            }

    предыстория. IRX_Library - XML-RPC server

    вот так оно проверяет параметры к функции. так жестко по массиву ходить не стоит... (((

    nicolay-punin, 11 Марта 2010

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

    +170.9

    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
    <?php
     $mounths["January"]="01";
     $mounths["February"]="02";
     $mounths["March"]="03";
     $mounths["April"]="04";
     $mounths["May"]="05";
     $mounths["June"]="06";
     $mounths["July"]="07";
     $mounths["August"]="08";
     $mounths["September"]="09";
     $mounths["October"]=10;
     $mounths["November"]=11;
     $mounths["December"]=12;
    
     $m=date("F");
     $d=date("d");
     $Y=date("Y");
     $datetime=date("Y")."-".$mounths[$m]."-".date("d")." ".date("H").":".date("i").":".date("s");
     $date=date("Y")."-".$mounths[$m]."-".date("d");
    ?>

    Ээээ, чо? Нарыл в проекте. Отпаиваюсь чаем.

    azzz, 11 Марта 2010

    Комментарии (15)
  3. 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)
  4. 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)
  5. 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)
  6. 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)
  7. 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)
  8. 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)
  9. 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)
  10. 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)