1. 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)
  2. 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)
  3. 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)
  4. 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)
  5. 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)
  6. PHP / Говнокод #2725

    +147.8

    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
    <?php
    
    // *** Первая версия ***
    
    $numb = $_GET["n"]; // Получаем информацию
    $from = $_GET["f"];
    $to = $_GET["t"];
    
    if (!$numb or !$from or !$to) { // Проверяем есть ли информация, и полна ли она
    echo "<html><head><title>Перевод между сист. исчисл. 2<->36</title></head><body>"; // Выводим справку и ошибку
    echo "<center><u><i>Справка:</i></u> index.php?n=<b>число</b>&f=<b>исходная сист. исчисл.</b>&t=<b>конечная сист. исчисл.</b><hr></center>";
    echo "<center><b>ОШИБКА: Данные не обнаружены или неполные!</b><br>Возможно, что вы тут в первый раз...</center>";
    echo "</body></html>";
    } else {
    echo "<html><head><title>Перевод между сист. исчисл. 2<->36</title></head><body>"; // Выводим справку и результаты
    echo "<center><u><i>Справка:</i></u> index.php?n=<b>число</b>&f=<b>исходная сист. исчисл.</b>&t=<b>конечная сист. исчисл.</b><hr></center>";
    echo "<center>Исходное число: $numb<br>";
    echo "Начальная сист. исчисл.: $from<br>";
    echo "Конечная сист. исчисл.: $to<br>";
    echo "Результат: ";
    echo base_convert("$numb",$from,$to);
    echo "</center></body></html>";
    }
    
    ?>
    
    <?php
    
    // *** Вторая версия - форма ***
    
    echo "<html><head><title>Перевод между С.И.</title></head><body>"; // Выводим форму
    echo "<center><form method='post' action='new_e.php'>Исходное  число:<br><input type = 'text' name='n'><hr>";
    echo "Исходная С.И.:<br><input type='radio' name='f' value='2'>BIN (2)<br>";
    echo "<input type='radio' name='f' value='8'>OCT (8)<br>";
    echo "<input type='radio' name='f' value='10'>DEC (10)<br>";
    echo "<input type='radio' name='f' value='16'>HEX (16)<br>";
    echo "<hr>";
    echo "Конечная С.И.:<br><input type='radio' name='t' value='2'>BIN (2)<br>";
    echo "<input type='radio' name='t' value='8'>OCT (8)<br>";
    echo "<input type='radio' name='t' value='10'>DEC (10)<br>";
    echo "<input type='radio' name='t' value='16'>HEX (16)<br>";
    echo "<hr><input type='submit' value='Выполнить'></form></center>";
    echo "</center></body></html>";
    
    ?>
    
    <?php
    
    // *** Вторая версия - вычисления ***
    
    $numb = $_POST["n"]; // Получаем информацию
    $from = $_POST["f"];
    $to = $_POST["t"];
    
    echo "<html><head><title>Перевод между С.И.</title></head><body>"; // Выводим результаты
    echo "<center>Исх. число: $numb<br>";
    echo "Начальная С.И.: $from<br>";
    echo "Конечная С.И.: $to<br>";
    echo "Результат: ";
    echo base_convert("$numb",$from,$to);
    echo "<hr><center><a href='/new.php'>Назад</a></center>";
    echo "</center></body></html>";
    
    ?>

    Одно из первых моих творений, переводит числа в различные системы исчисления. Представлено две первые версии, одна получала через GET, а другая уже через POST. Первая "ручная" (то есть вбиваем в адрес данные ручками), а другая состояла из двух файлов (формы и собственно обработка и выполнение операции с полученных данных).

    Говнокод заключается в злоупотреблении ECHO (не думаю, что закинуть полученные данные в переменные тоже грех особый). Позже в третьей версии скрипта все было приведено в норму, и два файла были совмещены в один :)

    Мартин, 06 Марта 2010

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

    +168.4

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    if (count($_SESSION["cart"]["discs"])==0)
    {
    $poryadochek="yes";
    } else {
    $poryadochek="no";
    }

    Verbose programming.

    starfall, 05 Марта 2010

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

    +171.7

    1. 1
    2. 2
    3. 3
    4. 4
    while (true) {
    	load_config();
    	break;
    }

    starfall, 04 Марта 2010

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

    +157.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
    while (count(array_diff(array_keys($rows), $roots)) > 0) 
    		{
    			 $theLeaves = $this->_getLeaves($rows);
    			 foreach ($theLeaves as $leafId) 
    			 {
    			 	if(isset($rows[$rows[$leafId]['parent_id']]['Menu']['data']) and 
                                               !is_array($rows[$rows[$leafId]['parent_id']]['Menu']['data']))
    			 		if(!is_array($rows[$rows[$leafId]['parent_id']]['Menu']['data']))
                                                   unset($rows[$rows[$leafId]['parent_id']]['Menu']['data']);
                                            
    				  if(isset($rows[$rows[$leafId]['parent_id']]['data']) and 
                                            !is_array($rows[$rows[$leafId]['parent_id']]['data']))
    			 	     if(!is_array($rows[$rows[$leafId]['parent_id']]['data']))
                                                unset($rows[$rows[$leafId]['parent_id']]['data']);
                                         
    				  $rows[$rows[$leafId]['parent_id']]['data'][] = $rows[$leafId];
    				  unset($rows[$leafId]);
    			 }
    		}

    пришел проектик на доработку. сижу, пытаюсь разобраться

    gesper, 04 Марта 2010

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

    +168.9

    1. 1
    die('<script LANGUAGE="JavaScript">location.replace("'.$url.'");');

    Приветствуем победителя конкурса на самый извращенный редирект.

    wwwguru, 03 Марта 2010

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