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

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

    +164

    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
    var s = setUpOmnitureVariable();
    s.pageName="LO-20110214-EE-VQP-203";
    s.server="www2.experts-exchange.com";
    s.channel="Web_Development/Web_Languages-Standards/PHP";
    s.pageType="";
    s.prop1=document.title;
    s.prop2="";
    s.prop3="";
    s.prop4="";
    s.prop5="";
    s.prop6="";
    s.prop7=""; // TODO THIS IS NO LONGER PROP 7, SHOULD BE BLOG AUTHOR
    s.prop8="";
    s.prop9="";
    s.prop10="";
    s.prop11="";
    s.prop12="";
    s.prop14="";
    s.prop15="50";
    s.prop16="";
    
    <...>
    
    s.prop27="";
    s.prop28="";
    
    <...>
    s.prop41="";
    s.prop42="";
    s.prop43="";
    s.prop44="";
    s.prop45="";
    s.prop46="";
    s.prop47="";
    s.prop48="";
    s.prop49="";
    s.prop50="";
    /* E-commerce Variables */
    s.campaign="";
    s.events="event4,event74";
    s.products="";
    s.state="";
    s.zip="";
    s.purchaseID="";
    s.eVar1=document.title;
    s.eVar2="";
    s.eVar3="AD #3 - Scroll, bullet, no steps";
    s.eVar4="";
    s.eVar5="";
    s.eVar6="Free Trial Guest";
    s.eVar7="";
    s.eVar8="";
    s.eVar9="";
    s.eVar10="";
    s.eVar14="";
    
    <...>
    s.eVar26="";
    s.eVar27="";
    s.eVar28="";
    s.eVar29="5AM";
    s.eVar30="Sunday";
    s.eVar31="77.243.99.37";
    s.eVar32="";
    s.eVar33="Web_Development/Web_Languages-Standards/PHP";
    s.eVar34="3";
    s.eVar35="20110214-EE-VQP-203-FREE-TRIAL";
    s.eVar36="Header AD";
    
    <...>
    
    s.eVar44="Accepted Solution";
    s.eVar45="EE_Level3 - 2";
    s.eVar46="";
    s.eVar47="";
    s.eVar48="";
    s.eVar49="rating9.6";

    Источник виден в коде. Неужели нельзя было массив сделать?! Или это такой странный вид обфускации?

    RaZeR, 27 Февраля 2011

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

    +164

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    $this->db->Query("DELETE FROM `u_proposal`
    				WHERE `id` = '%d' AND `user` = '%d'", $item, $this->user->id);
    $this->db->Query("DELETE FROM `p_options`
    				LEFT JOIN `u_proposal` ON `p_options`.`portfolio` = `u_proposal`.`id`
    				WHERE `p_options`.`portfolio` = '%d' AND `p_options`.`type` = 'project' AND `u_proposal`.`user` = '%d'", $item, $this->user->id);

    3 часа еб**ся не мог понять почему записи из p_options не удаляются ))

    Sulik78, 25 Февраля 2011

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

    +164

    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
    $zzz1="<table width=\"100%\" border=\"1\" cellspacing=\"0\" cellpadding=\"0\" class=\"tsa\">";
    $zzz3="</table>";
            if($str==1){
                    $str=0;
            }
            for($lk=$str;$lk<$str+10;$lk++){
            $kod=$pv;
            $kod=$this->sql("SELECT name_saita, url_saita, opis FROM $this->sait WHERE id='{$kod[$lk][id]}'");
            $kod=$this->mb($kod);
            if($kod[0]['name_saita']==NULL){
                    break;
            }
    $zzz2=$zzz2."<tr>
       <td align=\"center\" width=\"20%\">{$kod[0][nov_saita]}</td>
       <td width=\"80%\" class=\"op\">{$kod[0][opis]}</td>
       </tr>";
    }
    $zzz=$zzz1.$zzz2.$zzz3;

    Классика жанра

    Uchkuma, 21 Февраля 2011

    Комментарии (9)
  5. SQL / Говнокод #5713

    −858

    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
    INSERT INTO actpr (userid,orgid,grupid,grupa, sum,abo_sum,;
    	req,atbilde,kods,time,requestid,pakalpojum);
    	value(Grozs .userid, Grozs .orgid,Grozs .grupid,Grozs .grupa,Grozs.sum ,0, ;
    	Grozs .req,Grozs .atbilde, Grozs .kods,;
    	this.time,this.requestId ,Grozs .pakalpojum)
    
    replace ;
    	tarifs WITH  Grozs .tarifs ,;
    	aid with Grozs .aid,;
    	param with Grozs .param,;
    	ip with this.ip,;
    	atlikum WITH konti.extra_sum - Grozs.sum ,;
    	abo_atlik WITH konti.abo_sum, ;
    	old_atlik WITH konti.old_sum ,;
    	sessionid  WITH this.sessionid,;
    	veids with Grozs .veids,;
    	stan_cena WITH Grozs .stan_cena,;
    	pvn WITH Grozs .pvn,;
    	next_sum WITH 0,;
    	next_atlik WITH konti.next_sum;
    	 IN  actpr

    Написано на FoxPro (!)
    Незнаю даже что написать...

    lurseg, 18 Февраля 2011

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

    +159

    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
    <?
    function strip_html_tags( $text )
    {
            $text = preg_replace(
                    array(
                            // Remove invisible content
                            '@<noindex[^>]*?>.*?</noindex>@siu',
                            '@<head[^>]*?>.*?</head>@siu',
                            '@<style[^>]*?>.*?</style>@siu',
                            '@<script[^>]*?.*?</script>@siu',
                            '@<object[^>]*?.*?</object>@siu',
                            '@<embed[^>]*?.*?</embed>@siu',
                            '@<applet[^>]*?.*?</applet>@siu',
                            '@<noframes[^>]*?.*?</noframes>@siu',
                            '@<noscript[^>]*?.*?</noscript>@siu',
                            '@<noembed[^>]*?.*?</noembed>@siu',
     
                            // Add line breaks before & after blocks
                            '@<((br)|(hr))@iu',
                            '@</?((address)|(blockquote)|(center)|(del))@iu',
                            '@</?((div)|(h[1-9])|(ins)|(isindex)|(p)|(pre))@iu',
                            '@</?((dir)|(dl)|(dt)|(dd)|(li)|(menu)|(ol)|(ul))@iu',
                            '@</?((table)|(th)|(td)|(caption))@iu',
                            '@</?((form)|(button)|(fieldset)|(legend)|(input))@iu',
                            '@</?((label)|(select)|(optgroup)|(option)|(textarea))@iu',
                            '@</?((frameset)|(frame)|(iframe))@iu',
                    ),
                    array(
                            ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
                            "\n\$0", "\n\$0", "\n\$0", "\n\$0", "\n\$0", "\n\$0",
                            "\n\$0", "\n\$0",
                    ),
                    $text );
     
            // Remove all remaining tags and comments and return.
            return strip_tags( $text );
    }

    qbasic, 13 Февраля 2011

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

    +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
    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
    <?php
    
    class UserSessionComponent extends Component {
    	//...
    	protected function loginByUserId($user_id, $is_autologin = false) {
    		$list = $this->_loadComponents($this->components, array('UserAuth'));
    		$userAuth = $list['UserAuth'];
    		$userAuth->startup($this->controller); # !!! WORKFLOW VIOLATION !!!
    		$method = $is_autologin ? 'autologin' : 'login';
    		if ($userAuth->$method($user_id)) {
    			return $this->controller->Session->read('User.data');
    		}
    	}
    	//...
    }
    
    class UserAuthComponent extends BaseMagicComponent {
    	protected $loginType = 'explicit';
    
    	//...
    
    	public function autologin($params = array()) {
    		$this->loginType = 'implicit';
    		return $this->_login($params);
    	}
    
    	public function login($params = array()) {
    		$this->loginType = 'explicit';
    		return $this->_login($params);
    	}
    
    	//...
    	protected function _login($params = array()) {
    		switch (true) {
    			case (is_array($params) && isset($params['user']) && isset($params['password'])):
    				$result = $this->loginByUserAndPassword($params['user'], $params['password']);
    				break;
    			case (is_numeric($params) && $params > 0):
    				$result = $this->loginUser($params);
    				break;
    			default:
    				if (empty($params)) {
    					$result = false;
    				} else {
    					$result = $this->loginUser($params);
    				}
    		}
    		// ...
    	}
    
    	// ...
    	public function loginUser($user) {
    		switch (true) {
    			case is_object($user):
    				if (isset($user->data)) {
    					$a_user = $user->data;
    				} else {
    					return false;
    				}
    				break;
    			case (is_numeric($user) && ($user > 0)):
    				if (!($a_user = $this->User->findById($user))) {
    					return false;
    				}
    				break;
    			case (is_array($user) && (isset($user['User']['id']))):
    				$a_user = $user;
    				break;
    			default:
    				return false;
    		}
    		// ...
    		CFL::using('log');
    		if (empty($GLOBALS['loginIsLogged'])) {
    			$loginLog = new cflLoginTrackingLogger();
    			if ($this->loginType == 'implicit') {
    				$loginLog->implicit_login(array('user_id' => $a_user['User']['id']));
    			} else {
    				$loginLog->explicit_login(array('user_id' => $a_user['User']['id']));
    			}
    			$GLOBALS['loginIsLogged'] = true;
    		}
    		// ...
    	}
    }

    Сорри за много-много кода, еле-еле вписался в лимит. Но пришлось запостить все. Логическая цепочка совершенно потрясающая (смотрим с самого верхнего метода и идем дальше к самому нижнему методу). Тут у нас кода просто по колено: сумасшедший пахлава-код, использование глобальной переменной флага, особое извращенное использование конструкции switch, фактическое дублирование этого самого switch в двух последних методах, нейминг переменных и методов...
    Казалось бы, как все это вообще могло быть написано? Но использование компонента с говорящим именем BaseMagic все ставит на свои места.

    quall, 09 Февраля 2011

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

    +166

    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
    // 0. original version:
    struct Subscriber {
    	ServiceConfig *services;
    };
    
    struct ServiceConfig {
    };
    
    // reported problem: as per doc, Customer may have multiple service configurations, yet we can configure only one.
    
    // 1. next "fixed" version, as delivered to the customer:
    struct Subscriber {
    };
    
    struct ServiceConfig {
    	Subscriber *subs;
    };
    
    // ticket reopened: wtf. changing services for one customer, affects others!!
    
    // 2. next "fixed" version, as delivered to the customer:
    struct Subscriber {
    	ServiceConfig *services;
    };
    
    struct ServiceConfig {
    };
    
    // ticket reopened: @#$%^& [*BEEP*] @#$%^& [*BEEP*] @#$%^&*
    
    // 3. finally:
    struct Subscriber {
    };
    
    struct ServiceConfig {
    };
    
    struct SubscriberServiceConfig {
    	Subscriber *subs;
    	ServiceConfig *services;
    };

    если бы лично не лицезрел эту переписку (навечно задокументированую в аналах вершн контрол) между нашими разработчиками и консультантами работающими на инсталяции у кастомера, нивжисть бы не поверил что такое даже может иметь место.

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

    Dummy00001, 07 Февраля 2011

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

    +146

    1. 1
    2. 2
    3. 3
    char odin=1,odin2=1;
    if (&odin!=&odin2)
            Memo1->Lines->Add("FUCK!");

    я новичок, и после 3-й надписи FUCK! в Memo1 мой моск взорвалсо.
    помните меня таким, каким я был...

    myrik, 04 Февраля 2011

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

    +36

    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
    /**
     * Implementation of hook_access().
     *
     * Node modules may implement node_access() to determine the operations
     * users may perform on nodes. This example uses a very common access pattern.
     */
    function node_example_access($op, $node, $account) {
      if ($op == 'create') {
        return user_access('create example content', $account);
      }
    
      if ($op == 'update') {
        if (user_access('edit any example content', $account) || (user_access('edit own example content', $account) && ($account->uid == $node->uid))) {
          return TRUE;
        }
      }
    
      if ($op == 'delete') {
        if (user_access('delete any example content', $account) || (user_access('delete own example content', $account) && ($account->uid == $node->uid))) {
          return TRUE;
        }
      }
    }

    http://api.drupal.org/api/examples/node_example--node_example.module/6/source
    тут еще много.
    но факт что те кто это пишут таки нужные люди. сама документация достаточно достоверна

    brainstorm, 02 Февраля 2011

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

    +164

    1. 1
    $code = $id_user.rand(0,9).rand(0,12).rand(0,32).rand(0,32).rand(0,32).rand(0,32).rand(0,32).".txt";

    Стопицотый генератор.

    Uchkuma, 01 Февраля 2011

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