1. Куча / Говнокод #4183

    +133

    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
    <script id="tpl_top" type="text/html" style="display: none;"><a name="comment_<%= row.id %>"></a>
    <table cellspacing="0" id="comment-cnt_<%= row.id %>" class="<%= row.tableClass %>">
        <tr>
            <% if (row.side === 2) { %>
            <td width="5" class="transp_td"><div class="spacer"></div></td>
            <% } %>
            <td width="5" height="5" class="ug_1">
                <div class="spacer"></div>
            </td>
            <td><div class="spacer"></div></td>
            <td width="5" class="ug_2"><div class="spacer"></div></td>
            <% if (row.side === 1) { %>
            <td width="5" class="transp_td"><div class="spacer"></div></td>
            <% } %>
        </tr>

    Фрагмент из http://holywars.ru/
    Не могу определить, что за скрипт такой text/html, поэтому поместил в Кучу.
    Если я туплю, поставьте 11 минусов за ламерство, и этот ГК исчезнет.

    inkanus-gray, 06 Сентября 2010

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

    +171

    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
    define('ERROR', 1);
    define('WARNING', 2);
    define('PARSE', 4);
    define('NOTICE', 8);
    define('CORE_ERROR', 16);
    define('CORE_WARNING', 32);
    define('COMPILE_ERROR', 64);
    define('COMPILE_WARNING', 128);
    define('USER_ERROR', 256);
    define('USER_WARNING', 512);
    define('USER_NOTICE', 1024);
    // ---------------------------
    $errortype = array(
    1=>'Ошибка',
    2=>'Предупреждение!',
    4=>'Ошибка разборщика',
    8=>'Замечание',
    16=>'Ошибка ядра',
    32=>'Предупреждение ядра!',
    64=>'Ошибка компиляции',
    128=>'Предупреждение компиляции!',
    256=>'Пользовательская Ошибка',
    512=>'Пользовательскаое Предупреждение!',
    1024=>'Пользовательскаое Замечание',
    2048=>'Небольшое замечание',
    8192=>'Устаревший код');

    Мартин, 06 Сентября 2010

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

    +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
    <?php
    require_once 'mainfunc.php';
    $template->msg('SET TITLE', $conf['wiki']['title']);
    $rev = intval(@$_GET['rev']);
    if(@$_GET['ae']){session_destroy();unset($admin);}
    ?>
    <h1><?= $conf['wiki']['title']; ?></h1>
    <p><a href="create.php">[Создать статью]</a> <?php
    if($rev) echo '<a href="index.php?rev=0">[Перевернуть]</a>';
    else echo '<a href="index.php?rev=1">[Перевернуть]</a>';
    ?></p>
    <?php
    $tpr = array();
    echo '<p>';
    $fls = array();
    foreach(scandir('files') as $k) if($k{0}!='.') $fls[]=$k;
    natsort($fls);
    if($rev) $fls=array_reverse($fls);
    foreach($fls as $k){
      if($k{0}=='-') continue;
      $f=file('files/'.$k);
      if($f[0]{0}=='#') $f[0]{0}='';  $tpr[] = '<a href="view.php?id='.$k.'">'.$f[0].'</a><br>';
    }
    $pnav = new PageNavigator($tpr, 'index.php?page=$p&rev='.$rev);
    $pnav->page();
    echo '</p>';
    echo '<p class="nav">';
    $pnav->panel();
    echo '</p>';
    if(@$admin) echo '<p>Вы админ <a href="index.php?ae=1">[X]</a></p>';
    $template->act(); //Запускаем вывод
    ?>

    Инновационный вики-движок для вап-интернета, в действии можно посмотреть здесь: http://wiki.wup.ru/
    От одного index.php становится худо.
    Плюс работает это еще с помощью какого-то фреймворка, при этом весь html размазан практически по всему проекту, да и все это еще на файлах.
    Куча дыр, фильтрующие регулярки не пашут, даже банального антифлуда нет - можно жать f5 и радоваться.
    Полностью сорцы можно скачать тут: http://wiki.wup.ru/wikibackups/

    7ion, 06 Сентября 2010

    Комментарии (79)
  4. Куча / Говнокод #4180

    +144

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    Но имей ввиду, в реали, когда на работу пойдёшь, в СУБД у тебя уже скорее всего будет помойка, в том числе с триггерами. 
    К этому надо привыкнуть, так как никакие уговоры убрать триггера на «товарищей» не подействуют, наоборот разозлят, 
    над тобой будут смеяться и скажут, что крутые пацаны работают только на триггерах.
    От хакерских атак одно подключение не спасёт, это я просто так высмеиваю шибко «умных» людей.
    
    Eсть другая идея - на странице регистрации высвети кнопки с цифрами и алфавитом чтобы пользователь вводил пароль не с клавиатуры,
     а щёлкая мышью по кнопкам. Сами кнопки можешь в случайном порядке расположить.
    Потом мы вместе с тобой будем над хакерами смеяться.

    Max Pro рассуждает на тему безопасности.
    http://sql.ru/forum/actualthread.aspx?tid=787435
    тут пытаемся выманить его на разговор про серверный жаваскрипт
    http://www.sql.ru/forum/memberinfo.aspx?mid=14149
    тут ссылка на его профиль раз
    http://www.aspnetmania.com/Users/User/1614.html
    тут ссылка на профиль два.
    сообщения доставляют
    http://aspnetmania.com/Blogs/1614.html
    тут старый блог

    ursus, 06 Сентября 2010

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

    +144

    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
    #include <iostream>
    using namespace std;
    void f(double *x1,double *x2,double *x3)
    {
    	if (((*x1>*x2)&&(*x1<*x3))||((*x1<*x2)&&(*x1>*x3)))
    		*x1=(*x2+*x3)/2;
    	if (((*x2>*x1)&&(*x2<*x3))||((*x2<*x1)&&(*x2>*x3)))
    		*x2=(*x1+*x3)/2;
    	if (((*x3>*x1)&&(*x3<*x2))||((*x3<*x1)&&(*x3>*x2)))
    		*x3=(*x2+*x1)/2;
    }
    int main()
    {
    	double x1,x2,x3;
    	cin>>x1>>x2>>x3;
    	double *y1=&x1;
    	double *y2=&x2;
    	double *y3=&x3;
    	f(y1,y2,y3);
    	cout<<x1<<' '<<x2<<' '<<x3;
    	return 0;
    }

    Креатив.

    Irdis, 06 Сентября 2010

    Комментарии (1)
  6. Java / Говнокод #4178

    +69

    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
    /**
         * Инициализация набора действий, определенных для контейнера.
         * @param context
         * @throws DfException
         */
        protected void initializeTransitions(EditorContext context) throws DfException{
            AbstractDocumentModel documentModel = getDocumentModel();
            AbstractState state = documentModel.getLifeCyclePolicy(context).getState(context);
            
            if (!documentModel.isNew())
            {
                addTransition(TransitionName.CREATE_DETACHED_COMMISSION, TransitionHandler.CREATE_DETACHED_COMMISSION);
                addTransition(TransitionName.PRINT, TransitionHandler.PRINT);
            }
            AbstractTaskModel taskModel = context.getTaskModel();
            if (taskModel  instanceof ReviewDocumentTaskModel && !(taskModel  instanceof ExpeditionaryProcessingDocumentTaskModel)){
    //                 && !(taskModel instanceof AttachFileAndReviewDocumentTaskModel)){
    
                      
            if ((taskModel instanceof AttachFileToDocumentTaskModel || taskModel instanceof WaitForScanningTaskModel) && ((documentModel instanceof InternalDocumentModel) || (documentModel instanceof OutgoingDocumentModel) || (documentModel instanceof IncomingDocumentModel)))
                addTransition(TransitionName.PRINT_BARCODE, TransitionHandler.PRINT_BARCODE);
    
            if (taskModel instanceof AbstractDocumentTaskModel){
                if ( state instanceof AbstractDraftState ){
                    if( state instanceof NewProtocolDraftState)
                        addTransition(ContainerAction.ACTION_NAME, TransitionName.SEND_DRAFT, TransitionName.REGISTER, TransitionHandler.SEND_DRAFT);
                    else if (state instanceof NewDraftState)
                        addTransition(TransitionName.SEND_DRAFT, TransitionHandler.SEND_DRAFT);
                    if (state instanceof AbstractApprovalDraftState)
                        addTransition(TransitionName.REWORK_DRAFT, TransitionHandler.REWORK_DRAFT);
                    if (state instanceof AnalyseDraftState)
                        addTransition(TransitionName.SEND_DRAFT, TransitionDescription.SEND_DRAFT_ANALYSE, TransitionHandler.SEND_DRAFT);
                    if (state instanceof ControlDraftState)
                        addTransition(TransitionName.SEND_DRAFT, TransitionDescription.SEND_DRAFT_CONTROL, TransitionHandler.SEND_DRAFT);
                    if (state instanceof ApproveDraftState)
                        addTransition(TransitionName.SEND_DRAFT, TransitionDescription.SEND_DRAFT_APPROVAL, TransitionHandler.SEND_DRAFT);
                    if (state instanceof SignDraftState)
                        addTransition(TransitionName.SEND_DRAFT, TransitionDescription.SEND_DRAFT_SIGN, TransitionHandler.SEND_DRAFT);
                    if (state instanceof ExternalApproveDraftState)
                        addTransition(TransitionName.SEND_DRAFT, TransitionDescription.SEND_DRAFT_APPROVAL, TransitionHandler.SEND_DRAFT);
                    if (state instanceof ControlApproveDraftState)
                        addTransition(TransitionName.SEND_DRAFT, TransitionDescription.SEND_DRAFT_CONTROLED, TransitionHandler.SEND_DRAFT);
                    if (state instanceof ConfirmationDraftState)
                        addTransition(TransitionName.SEND_DRAFT, TransitionDescription.SEND_DRAFT_CONFIRM, TransitionHandler.SEND_DRAFT);
                }
              }
            }
            
    .................. несколько страниц такого кода ...........................
          
            if (state instanceof AbstractApprovalDraftState ||
                state instanceof ReworkDraftState ||
                state instanceof NewDocumentState ||
                state instanceof RegisterDocumentState ||
                state instanceof ReviewDocumentState ||
                state instanceof ExecuteDocumentState){
            	addTransition(TransitionName.SAVE, TransitionHandler.SAVE);
            }
    
            super.initializeTransitions(context);
        }

    Автор решил захардкодить в одном месте логику переходов между всеми состояниями всех жизненных циклов всех документов, реализованных в системе документооборота. Получился говнокод-BPM-движок. А внешне код очень даже солидный: с константами и комментариями... и названиями классов вроде: ExpeditionaryProcessingDocumentTaskModel

    dab84, 06 Сентября 2010

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

    −865

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    FUNCTION f_decncity_arr_find_base(p_gds_id IN NUMBER, p_date IN DATE DEFAULT SYSDATE) RETURN VARCHAR2 IS
        v_denc15 NUMBER; v_k0 NUMBER; v_k1 NUMBER;
    BEGIN
        decncity_arr_find_base(p_gds_id, p_date, v_denc15, v_k0, v_k1);
        RETURN 'DENC15!=@'||TO_CHAR(v_denc15)||'@ K0!=@'||TO_CHAR(v_k0)||'@ K1!=@'||TO_CHAR(v_k1)||'@';
    END;

    Так и не поняли, что это....

    markbrutt, 06 Сентября 2010

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

    +158

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    if ($_REQUEST['name']){
    	$nameProduct = $_REQUEST['name'];
    	$products = $db->products($_REQUEST['name']);
    } else {
    	$products = 'error';	
    }
    
    if ($products == 'error'){
    	$http->redirect('index.php');
    }

    Из частного проекта.
    Во-первых почему-бы не использовать $nameProduct второй раз вместо $_REQUEST['name']?
    Во-вторых вместо $products = 'error'; можно сразу было сделать редирект, т.к. все последующие использования $products не имеют смысла, если редирект выполнен.

    mikhailu, 06 Сентября 2010

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

    +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
    if($result){
    				list($Title_block, $Sections, $Description,$Moderators) = mysql_fetch_row($result)
    				//$row = mysql_fetch_assoc($result)
    				echo "<form>\n";
    					echo "\t<table border='4' cellspacing='1' cellpadding='1' width='1000' height='60'>\n";
    						echo "\t\t<tr>\n";
    							echo "\t\t\t<td colspan='5' bgcolor='gray' align='leftmargin'>$Title_block</td>\n";
    						echo "\t\t</tr>\n";
    				do{
    					echo "\t\t<tr>\n";
    						echo "\t\t\t<td bgcolor='#A0A0A0'></td>\n";
    						echo "\t\t\t<td bgcolor='#A0A0A0' width='500'>Форум</td>\n";
    						echo "\t\t\t<td bgcolor='#A0A0A0'>Тем</td>\n";
    						echo "\t\t\t<td bgcolor='#A0A0A0'>Сообщений</td>\n";
    						echo "\t\t\t<td bgcolor='#A0A0A0'>Последних сообщений</td>\n";
    					echo "\t\t</tr>\n";
    					echo "\t\t<tr>\n";
    						echo "\t\t\t<td bgcolor='##D0D0D0'><img src='mus.png'></td>\n";
    						echo "\t\t\t<td bgcolor='#D0D0D0' width='500' class='row4'>\n";
    							echo "\t\t\t\t<b><a href='Click' style='color:black;'>$Sections</a></b>\n";
    							echo "\t\t\t\t<br />$Description<br />Модераторы: $Moderators</td>\n";
    						echo "\t\t\t<td bgcolor='#D0D0D0'></td>\n";
    						echo "\t\t\t<td bgcolor='#D0D0D0'></td>\n";
    						echo "\t\t\t<td bgcolor='#D0D0D0'></td>\n";
    					echo "\t\t</tr>\n";
    				}while(list($Title_block, $Sections, $Description,$Moderators) = mysql_fetch_row($result));
    					echo "\t</table>\n";
    				echo "</form>\n";

    Часть одного самописного форума

    uadeveloper, 06 Сентября 2010

    Комментарии (12)
  10. C# / Говнокод #4174

    +129

    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
    private const int _multiple_cols = 0x0000060D;  //0001000001101 - (Multiple view)
    private const int _single_cols = 0x000007F1;	//0001111110001 - (Single view)
    
    private void SetGridColumnVisibility()
    {
    	int bits = _view_type == NotificationContactViewType.Multiple ? _multiple_cols : _single_cols;
    	DataControlFieldCollection cols = gvContacts.Columns;
    	DataControlField col;
    	for (int i = 0; i < cols.Count; i++)
    	{
    		col = cols[i];
    		int bit = (int)Math.Pow(2, i);
    		col.Visible = ((bits & bit) == bit);
    	}
    }

    Интересный способ установки видимости колонкам в гриде :)

    olldman, 05 Сентября 2010

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