1. Лучший говнокод

    В номинации:
    За время:
  2. PHP / Говнокод #7864

    +168

    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
    <?php
    	function isValidCharacters($str)
    	{
    		$str2 = preg_replace("[^a-zA-Zа-яА-Я[email protected]]","",$str);
    		if ($str != $str2) return FALSE;
    		return TRUE;
    	}
    	$nik=preg_replace("[^a-zA-Zа-яА-Я[email protected]]","",$_POST['nik']);
    	$pass=preg_replace("[^a-zA-Zа-яА-Я[email protected]]","",$_POST['pass']);
    	if (!isValidCharacters($nik) || !isValidCharacters($pass))
    	{
    		$_SESSION['auth']="error";
    		$_SESSION['error_mes']="Неверный логин или пароль";
    		header('Location: ./index.php');
    		exit();
    	}
    
    //дальше проверка на совпадение логина\пароля, ничего интересного.
    ?>

    Строка 10, после 8-9, типа "А вдруг?!"

    mr.The, 14 Сентября 2011

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

    +40

    1. 1
    2. 2
    3. 3
    4. 4
    function del_reiting_type($typeid){
    	global $typeid;
    .....
    }

    как-то так...

    brainstorm, 14 Сентября 2011

    Комментарии (7)
  4. SQL / Говнокод #7820

    −110

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    $sql_info = "SELECT * FROM accessories";
    $query_info = mysql_query($sql_info);
    while($row_info=mysql_fetch_array($query_info)) {
        $found_something=1;
    }

    Проверка наличия записей в БД

    mikhail-spb, 09 Сентября 2011

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

    +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
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    /*
    Содержимое news.xml
    <?xml version="1.0" encoding="utf-8"?>
     <news>
       <item>
         <title>Новые поступления</title>
         <text>
         This program is free software;
         </text>
         <date>13:30 - 12.08.2004</date>
       </item>
       <item>
         <title>ERERER поступления</title>
         <text>
           p pppppppppppppppp p p pp  p pppppppppppppppppp pppppppppppppppppppppp
         </text>
         <date>18:30 - 12.08.2004</date>
       </item>
     </news>
    */
    
    
     $file = fopen("news.xml","r");
     fseek($file, 47, SEEK_SET);
     $other = fread($file, 900000);
     fseek($file, 0, SEEK_SET);
     $prev = fread($file, 47);
     fclose($file);
     $file = fopen("news.xml","w");
    //...
    $text1 = "$text";
    $title = "$h1";
    $date = "$dates";
    echo $other;
    $all = $prev.'<item><title>'.$title.'</title><text>'.$text1.'</text><date>'.$date.'</date></item>'.$other;
    $buff = fputs ($file, $all);
    print $buff;

    Оригинальный способ дописывать новую новость в xml файл.
    Данный способ уже не кошерный:
    $doc = new DOMDocument();
    $doc->load($xml);
    $item = $doc->createElement('item');
    $news = $doc>getElementsByTagName('news')->item(0);
    $news->appendChild($item);
    $doc->save($xml);

    MoLe-X, 09 Сентября 2011

    Комментарии (7)
  6. JavaScript / Говнокод #7802

    +172

    1. 1
    2. 2
    3. 3
    4. 4
    days = (days < 10) ? days : days;
    hours = (hours < 10) ? hours : hours;
    minutes = (minutes < 10) ? minutes : minutes;
    seconds = (seconds < 10) ? seconds : seconds;

    Загадочная русская душа. Лежало в коде таймера обратного отсчета.

    ckald, 08 Сентября 2011

    Комментарии (7)
  7. JavaScript / Говнокод #7790

    +147

    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
    var credtype = new Array();
    credtype['A~'] = 'Страховка - финлизинг';
    credtype['A0'] = 'АвтоКредит за 30 мин';
    credtype['A1'] = 'Авто в кредит - основной';
    credtype['A2'] = 'Кредит на аванс';
    credtype['A3'] = 'Кредитные каникулы(авто)';
    credtype['A4'] = 'Залог авто (ПУФК)';
    credtype['A5'] = 'Стандартный автокредит <br/>(без страховок)';
    credtype['A6'] = 'Упрощённый автокредит <br/>(без страховок)';
    credtype['A7'] = 'Кредит без страховки (новые)';
    credtype['A8'] = 'Кредит без страховки (Б/У)';
    credtype['A9'] = 'Стандартный Б/У авто <br/>(с резервированием)';
    credtype['AA'] = 'Авто <br/>(прочие под залог автотранспорта)';
    credtype['AB'] = 'приобр. Авто Б/У';
    credtype['AC'] = 'покупка а/м Пежо (Илта) - схема 1';
    credtype['AD'] = 'Авто Б/У с площадок банка <br/>(некомис)';
    credtype['AE'] = 'Авто <br/>(Б/У с ежемесячной комиссией)';
    credtype['F2'] = 'Эконом-кредит отсрочка <br/>(Фокстрот)';
    credtype['F3'] = 'Потребительская корзина <br/>(Фокстрот)';
    credtype['F4'] = 'Фокстрот <br/>(меньше цена до 1500грн)';
    credtype['F5'] = 'Фокстрот <br/>(меньше цена от 1501 до 3000грн)';
    credtype['F6'] = 'Фокстрот <br/>(меньше цена от 3001 до 4500грн)';
    credtype['F7'] = 'Фокстрот <br/>(меньше цена от 4501 до 6000грн)';
    // …
    // Еще несколько десятков похожих строчек.
    // …
    credtype['FP'] = 'Ипотека с резервированием<br/>(упрощенный)';
    credtype['FQ'] = 'Кредитование охранников';
    credtype['FR'] = 'Акция 0% <br/>(ДОМОТЕХНИКА)';
    credtype['FS'] = '10*10*10 <br/>(ДОМОТЕХНИКА)';
    credtype['FT'] = 'ПРОСТОЙ <br/>(ДОМОТЕХНИКА)';
    credtype['FU'] = 'ДОМИАШНИЙ <br/>(ДОМОТЕХНИКА)';
    credtype['FV'] = 'МОБИЛЬНЫЙ со справкой <br/>(ДОМОТЕХНИКА)';
    credtype['FW'] = 'МОБИЛЬНЫЙ без справки <br/>(ДОМОТЕХНИКА)';
    credtype['FW'] = 'МОБИЛЬНЫЙ без справки <br/>(ДОМОТЕХНИКА)';
    credtype['FX'] = 'ГИБКИЙ /10-19.99/ <br/>(ДОМОТЕХНИКА)';
    credtype['FY'] = 'ГИБКИЙ /20-39.99/ <br/>(ДОМОТЕХНИКА)';
    credtype['FZ'] = 'ГИБКИЙ /40/ <br/>(ДОМОТЕХНИКА)';
    credtype['G0'] = 'ГИБКИЙ /40/ <br/>(ДОМОТЕХНИКА)';
    credtype['G1'] = 'жильё в кредит - основной';
    credtype['SZ'] = 'Событийное на заработки';
    credtype['TP'] = 'Только паспорт <br/>(Приват Кредит)';
    credtype[''] = '';
    
    function getCreditName(creditType) {
        var ct = credtype[creditType];
        if(ct != null)
            return ct;
        return '';
    }

    Код на сайте украинского ПриватБанка.

    prostosuper, 06 Сентября 2011

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

    +154

    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
    //Фунцкия транслита
       function ruslat ($string, $lower=false) {
          $string = ereg_replace(" ","_",$string);
          $string = ereg_replace("ж","zh",$string);
          $string = ereg_replace("ё","yo",$string);
          $string = ereg_replace("й","i",$string);
          $string = ereg_replace("ю","yu",$string);
          $string = ereg_replace("ь","",$string);
          $string = ereg_replace("ч","ch",$string);
          $string = ereg_replace("щ","sсh",$string);
          $string = ereg_replace("ц","c",$string);
          $string = ereg_replace("у","u",$string);
          $string = ereg_replace("к","k",$string);
          $string = ereg_replace("е","je",$string);
          $string = ereg_replace("н","n",$string);
          $string = ereg_replace("г","g",$string);
          $string = ereg_replace("ш","sh",$string);
          $string = ereg_replace("з","z",$string);
          $string = ereg_replace("х","h",$string);
          $string = ereg_replace("ъ","",$string);
          $string = ereg_replace("ф","f",$string);
          $string = ereg_replace("ы","y",$string);
          $string = ereg_replace("в","v",$string);
          $string = ereg_replace("а","a",$string);
          $string = ereg_replace("п","p",$string);
          $string = ereg_replace("р","r",$string);
          $string = ereg_replace("о","o",$string);
          $string = ereg_replace("л","l",$string);
          $string = ereg_replace("д","d",$string);
          $string = ereg_replace("э","e",$string);
          $string = ereg_replace("я","ja",$string);
          $string = ereg_replace("с","s",$string);
          $string = ereg_replace("м","m",$string);
          $string = ereg_replace("и","i",$string);
          $string = ereg_replace("т","t",$string);
          $string = ereg_replace("б","b",$string);
          $string = ereg_replace("Ё","yo",$string);
          $string = ereg_replace("Й","I",$string);
          $string = ereg_replace("Ю","YU",$string);
          $string = ereg_replace("Ч","CH",$string);
          $string = ereg_replace("Ь","",$string);
          $string = ereg_replace("Щ","SСH'",$string);
          $string = ereg_replace("Ц","C",$string);
          $string = ereg_replace("У","U",$string);
          $string = ereg_replace("К","K",$string);
          $string = ereg_replace("Е","JE",$string);
          $string = ereg_replace("Н","N",$string);
          $string = ereg_replace("Г","G",$string);
          $string = ereg_replace("Ш","SH",$string);
          $string = ereg_replace("З","Z",$string);
          $string = ereg_replace("Х","H",$string);
          $string = ereg_replace("Ъ","",$string);
          $string = ereg_replace("Ф","F",$string);
          $string = ereg_replace("Ы","Y",$string);
          $string = ereg_replace("В","V",$string);
          $string = ereg_replace("А","A",$string);
          $string = ereg_replace("П","P",$string);
          $string = ereg_replace("Р","R",$string);
          $string = ereg_replace("О","O",$string);
          $string = ereg_replace("Л","L",$string);
          $string = ereg_replace("Д","D",$string);
          $string = ereg_replace("Ж","Zh",$string);
          $string = ereg_replace("Э","E",$string);
          $string = ereg_replace("Я","Ja",$string);
          $string = ereg_replace("С","S",$string);
          $string = ereg_replace("М","M",$string);
          $string = ereg_replace("И","I",$string);
          $string = ereg_replace("Т","T",$string);
          $string = ereg_replace("Б","B",$string);
          $string = ereg_replace("'","",$string);
          $string = ereg_replace('"','',$string);
          $string = ereg_replace('`','',$string);
          if ($lower) {$string = mb_strtolower($string, "UTF-8");}
          return $string;
       }

    Нашел в реальном проекте по FTP

    vaska_proger, 01 Сентября 2011

    Комментарии (7)
  9. C# / Говнокод #7722

    +122

    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
    public class ASyncFileHashAlgorithm
    	{
    		protected HashAlgorithm hashAlgorithm;
    		protected byte[] hash;
    		protected bool cancel = false;
    		protected int bufferSize = 4096;
    		public delegate void FileHashingProgressHandler (object sender, FileHashingProgressArgs e);
    		public event FileHashingProgressHandler FileHashingProgress;
    
    		public ASyncFileHashAlgorithm(HashAlgorithm hashAlgorithm)
    		{
    			this.hashAlgorithm = hashAlgorithm;
    		}
    
    		public byte[] ComputeHash(Stream stream)
    		{
    			cancel = false;
    			hash = null;
    			int _bufferSize = bufferSize; // this makes it impossible to change the buffer size while computing
    
    			byte[] readAheadBuffer, buffer;
    			int readAheadBytesRead, bytesRead;
    			long size, totalBytesRead = 0;
    
    			size = stream.Length;
             	readAheadBuffer = new byte[_bufferSize];
                readAheadBytesRead = stream.Read(readAheadBuffer, 0, readAheadBuffer.Length);
    
                totalBytesRead += readAheadBytesRead;    
    
                do
                {
                    bytesRead = readAheadBytesRead;
                    buffer = readAheadBuffer;    
    
                    readAheadBuffer = new byte[_bufferSize];
                    readAheadBytesRead = stream.Read(readAheadBuffer, 0, readAheadBuffer.Length);
    
                    totalBytesRead += readAheadBytesRead;    
    
                    if (readAheadBytesRead == 0)
                        hashAlgorithm.TransformFinalBlock(buffer, 0, bytesRead);
                    else
                        hashAlgorithm.TransformBlock(buffer, 0, bytesRead, buffer, 0);
    
    				FileHashingProgress(this, new FileHashingProgressArgs(totalBytesRead, size));
                } while (readAheadBytesRead != 0 && !cancel);
    
    			if(cancel)
    				return hash = null;
    
        		return hash = hashAlgorithm.Hash;
    		}
    
    		public int BufferSize
    		{
    			get
    			{ return bufferSize; }
    			set
    			{ bufferSize = value; }
    		}
    
    		public byte[] Hash
    		{
    			get
    			{ return hash; }
    		}
    
    		public void Cancel()
    		{
    			cancel = true;
    		}
    
    		public override string ToString ()
    		{
    			string hex = "";
    			foreach(byte b in Hash)
    				hex += b.ToString("x2");
    
    			return hex;
    		}
    	}

    Очень интересная реализация "асинхронного" хэширования.

    martin, 31 Августа 2011

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

    +163

    1. 1
    $style = (preg_match('#linux|windows|Yahoo|Rambler|Yandex|Google|bsd|bsd|unix|macos|macintosh#i', $_SERVER['HTTP_USER_AGENT'])) ? 'web' : 'wap';

    Вот так нужно определять, что же отдать клиенту - веб- или вап-версию.

    7ion, 31 Августа 2011

    Комментарии (7)
  11. C++ / Говнокод #7713

    +153

    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
    // ...
    if (m_parent->GetState() == Disconnected)
    {
    	CString login;
    	CString password;
    	m_login.GetWindowText(login);
    	m_password.GetWindowText(password);
    
    	if (login.IsEmpty()
    		|| password.IsEmpty())
    	{
    		::MessageBox(this->m_hWnd, _T("Please enter login and password"), _T("Input error"),MB_OK);
    		return;
    	}
    		
    	if (CheckString(login)
    		|| CheckString(password))
    	{
    		::MessageBox(this->m_hWnd, _T("You have entered unsupported symbol."), _T("Input error"), MB_OK);
    		m_login.SetWindowText(login);
    		m_password.SetWindowText(password);
    		
    		return;
    	}
    
    	SaveConfig();
    }
    
    // ...
    
    
    bool CheckString(CString& string)
    {
    	bool res = false;
    	CString checked = _T("<>,!()[]{}~`#$%^&*+=/\\\"|;:'");
    	for (int i = 0; i < checked.GetLength(); ++i)
    	{
    		if (string.Find(checked[i]) != -1)
    		{
    			res = true;
    			string = _T("");
    			break;
    		}
    	}
    
    	return res;
    }

    Проверка допустимых символов

    kandul, 31 Августа 2011

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