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

    −2

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    Object oriented style
    string mysqli::escape_string ( string $escapestr )
    string mysqli::real_escape_string ( string $escapestr )
    
    
    Procedural style
    string mysqli_real_escape_string ( mysqli $link , string $escapestr )
    
    
    http://php.net/manual/en/mysqli.real-escape-string.php

    roskomgovno, 20 Июля 2018

    Комментарии (57)
  2. Куча / Говнокод #24521

    −5

    1. 1
    2. 2
    Кто смотри передачу "ДНК" на "НТВ"?
    Это просто не багор, а багорище )))

    Potap, 20 Июля 2018

    Комментарии (49)
  3. Assembler / Говнокод #24518

    −2

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    sub1:
        ; ...
        push sub2.end
    sub2:
        ; ...
        ret
    .end:
        ; ...
        ret

    Это нормально? Или я мудэ?

    666_N33D135, 19 Июля 2018

    Комментарии (69)
  4. Си / Говнокод #24517

    −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
    // https://github.com/Qqwy/raii_with/blob/74e4c66a821fba6a483d62a8c583b3fab06e3443/raii/raii.h#L60
    
    /**
     * Custom Control Structure Macro to provide Resource Acquisition Is Initialization (and Resource Relinquishment is Destruction).
     *
     * Use this to run a block of code with `var_decl` initialized to `init`, where at the end of the block (or at an earlier `safe_return`),
     * the passed `destr`-function will automatically be called with the given resource.
     *
     * Gotcha's:
     * 1. Do not use `return` from within `raii_with`, but only `safe_return`, because otherwise the destructors will not be run.
     * 2. Do not perform pointer-swaps with `var_decl`; the destructor will still be run on the original structure, because `raii` keeps its own reference to the resource.
     */
    #define raii_with(var_decl, init, destr)                                \
      while(1) /* i.c.m. break on l.4, so we can jump past the user-supplied block */ \
        if(0)                                                               \
        raii_glue(__raii_with_finished, __LINE__):                              \
          break;                                                            \
        else                                                                \
          /* initialize _tmp lifetime list elem so replacement `raii_lifetime_list` can have previous one as tail. */ \
          for(struct raii_lifetime_list_t _tmp = {.elem.resource = init, .elem.destructor = destr, .next = raii_lifetime_list};;) \
            /* initialize user-supplied variable name */                    \
            for(var_decl = _tmp.elem.resource;;)                            \
              if (1) {                                                      \
                /* Fill `_tmp`'s tail before `raii_lifetime_list` is shadowed */ \
                _tmp.next = raii_lifetime_list;                             \
                goto raii_glue(__raii_with_setup, __LINE__);                    \
              } else                                                        \
              raii_glue(__raii_with_setup, __LINE__):                           \
                /* Shadow `raii_lifetime_list` with inner version */        \
                for(struct raii_lifetime_list_t *raii_lifetime_list = &_tmp;;) \
                  if(1){                                                    \
                    goto raii_glue(__raii_with_body, __LINE__);                 \
                  } else                                                    \
                    while (1) /* so break works as expected */              \
                      while (1) /*so continue works as expected */          \
                        if (1){                                             \
                          /*after the else-block (or break or continue), destruct and finish */ \
                          destruct_raii_lifetime(raii_lifetime_list->elem); \
                          goto raii_glue(__raii_with_finished, __LINE__);       \
                        } else                                              \
                        raii_glue(__raii_with_body, __LINE__):
    
    
    #endif // RAII_WITH_H

    raii

    A simple library to provide RAII in standard-compliant C99, using raii_with(resource, initializer, destructor) { ... }-syntax:

    j123123, 19 Июля 2018

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

    −1

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    try
    {
        ...
    }
    #if DEBUG
          catch
    #else
          catch
    #endif
    {
          ...
    }

    delpher, 18 Июля 2018

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

    −1

    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
    <?php include "init.php"; ?>
    <?php
    if(trim($_GET['mode'])=='ajax'){
    header('Content-Type: application/json; charset=utf-8');
    if(trim($_POST['action'])==htmlspecialchars(trim($_GET['script']))){
    $result=array();
    $result['errors']=array();
    if(trim($_POST['email'])==''){
    $result['errors']['email']=l('login_error_email_empty');
    } else {
    $check=mysql_query("SELECT * FROM `users` WHERE `email`='"._F($_POST['email'])."' OR (`phone`!='' AND `phone`='"._F(preg_replace('/\D/', '', $_POST['email']))."');");
    if(mysql_num_rows($check)){
    $user=mysql_fetch_assoc($check);
    } else {
    $result['errors']['email']=l('login_error_email_inexists');
    }
    }
    if(trim($_POST['password'])==''){
    $result['errors']['password']=l('login_error_password_empty');
    } elseif(mysql_num_rows($check) && $user['password']!=md5(trim($_POST['password']))){
    $result['errors']['password']=l('login_error_password_incorrect');
    } elseif($user['active']=='0'){
    $result['errors']['form']=l('login_error_account_inactive');
    } elseif($user['active']=='2'){
    $result['errors']['form']=l('login_error_account_removed');
    } elseif($user['active']=='3'){
    $result['errors']['form']=l('login_error_account_banned');
    }
    if(count($result['errors'])==0){
    $_SESSION['userid']=$user['userid'];
    mysql_query("UPDATE `users` SET `login_time`='".$time."' WHERE `userid`='".$_SESSION['userid']."';");
    $result['status']='success';
    } else {
    $result['status']='error';
    }
    echo json_encode($result);
    }
    exit;
    }
    ?>
    <?php
    $pagetitle=l('login_title')." • ".$config['sitename'];
    $pagedesc=$config['description'];
    ?>
    <?php
    if($m){ include "m-login.php"; exit; }
    ?>
    <?php include "inc/header.php"; ?>
    
    <div class="row">
    <div class="col-md-3"></div>
    <div class="col-md-6">
    <h3 class="special-title"><?php echo l('login_title'); ?></h3>
    <div class="auth-box">
    <form action="/<?php echo htmlspecialchars(trim($_GET['script'])); ?>/" method="POST" autocomplete="off" class="ajax-form" data-callback="loginCallBack">
    <input type="hidden" name="action" value="<?php echo htmlspecialchars(trim($_GET['script'])); ?>">
    <div class="form-group">
    <label><?php echo l('login_type_email'); ?></label>
    <div>
    <input type="text" autocomplete="off" class="form-control" name="email" placeholder="<?php echo l('login_email'); ?>" autofocus>
    </div>
    </div>
    <div class="form-group">
    <label><?php echo l('login_type_password'); ?></label>
    <div>
    <input type="password" autocomplete="off" class="form-control" name="password" placeholder="<?php echo l('login_password'); ?>">
    </div>
    </div>
    <button type="submit" class="btn btn-primary"><?php echo l('login_submit'); ?></button>
    <div class="cannot-login">
    <a href="<?php echo $locPrefix; ?>/restore/" class="pull-left"><?php echo l('login_cant_login'); ?></a>
    <a href="<?php echo $locPrefix; ?>/register/" class="pull-right"><?php echo l('login_to_register'); ?></a>
    <div class="clear"></div>
    </div>
    </form>
    </div>
    </div>
    <div class="col-md-3"></div>
    </div>
    
    <div class="social-login-title">
    <?php echo l('login_via_social_network'); ?>
    </div>
    
    <div class="social-login"><a href="/social/vk/<?php if(isset($_GET['ref'])){ ?>?ref=<?php echo urlencode($_GET['ref']); ?><?php } ?>" class="vkontakte"><i class="fa fa-vk"></i></a><a href="/social/ok/<?php if(isset($_GET['ref'])){ ?>?ref=<?php echo urlencode($_GET['ref']); ?><?php } ?>" class="odnoklassniki"><i class="fa fa-odnoklassniki"></i></a><a href="/social/fb/<?php if(isset($_GET['ref'])){ ?>?ref=<?php echo urlencode($_GET['ref']); ?><?php } ?>" class="facebook"><i class="fa fa-facebook"></i></a><a href="/social/gl/<?php if(isset($_GET['ref'])){ ?>?ref=<?php echo urlencode($_GET['ref']); ?><?php } ?>" class="google"><i class="fa fa-google"></i></a></div>
    
    <?php include "inc/footer.php"; ?>

    В среде "PHP"-разработчиков часто слышатся возбуждающие аппетит к ветчине повизгивания о том, что, дескать, без фреймворков не жизнь, чистый "PHP" - говно, и что без "Laravel" охуенный проект не создать. Но взгляните на вышеприведённый код страницы авторизации в одном из разработанных мною движков и задайте себе вопрос: зачем делить один ладненький, компактненький скриптик на контроллеры, модели, шаблоны, интерфейсы, и, как следствие, конское количество директорий, когда и "HTML"-представление, и "AJAX"-обработчик можно впихнуть в один файл на, в данном случае, полтора-два экрана? Чем обусловлена массовая течка по "MVC" и смежным архитектурам (к слову, не только лишь в "PHP", но и, слышно, в "Ruby" и "NodeJS")?

    HornyPorny, 18 Июля 2018

    Комментарии (46)
  7. Куча / Говнокод #24511

    −1

    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
    #lang racket
    (require (for-syntax racket/syntax syntax/to-string))
    (require ffi/unsafe)
    
    (define-for-syntax *method-names*
      ; Given I have hello, one and two methods in my shared lib
      (list "hello"
            "one"
            "two"
            ))
    
    (define-syntax (load-ffi-functions stx)
      (syntax-case stx ()
        [(_ name lib ffi-func)
        (let ([elem->fn-id 
                (λ (elem-str)
                  (display elem-str)
                  (format-id 
                   stx "~a" 
                   (datum->syntax stx (string->symbol elem-str))))]
                )
          (with-syntax ([(_) 
            (elem->fn-id "one")])
            #`(begin
              (define (name)
                  (printf (string->symbol name))
                  (ffi-func name lib (_fun -> _int))
                  )
                )
            )
        )]))
    
    (define rustlib (ffi-lib "./libffitest.dylib"))
    
    (define-syntax (define-ffi-func stx)
      (syntax-case stx ()
        [(_ lib ffi-func)
         (let ([elem->fn-id 
                (λ (elem-str)
                  (format-id 
                   stx "~a" 
                   (datum->syntax stx (string->symbol elem-str))))]
                )
           (with-syntax 
             ([((method name) ...)
               (map 
                (λ (elem)
                  (list (elem->fn-id elem) elem)
                )
                *method-names*)])
             #`(begin
                 (define method
                    (ffi-func name lib (_fun -> _int))
                  )
                 ...)))]))
    
    (define-ffi-func rustlib get-ffi-obj)
    (+ (one) (two) (one))

    Когда мне показали, как это правильно сделать, я немного ох#ел.

    Desktop, 17 Июля 2018

    Комментарии (4)
  8. 1C / Говнокод #24509

    +2

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    Попытка
    
       Если Найти( ОформлениеСтроки.ДанныеСтроки.Загружен, Истина ) Тогда
          // раскраска строки
       КонецЕсли;
    
    Исключение
    КонецПопытки

    На первый взгляд возникает вопрос: WTF???7семь
    На десятый взгляд меня посетили сомненья, ведь код а) рабочий, и 2) гениален!
    Смотрите сами.

    Вместо "Если ОформлениеСтроки.ДанныеСтроки.Загружен Тогда"

    гений с большой буквы "Г" делает финт ушами с наподвыподвертом:
    Так как функция "Найти" работает со строками и 1С автоматически преобразует, где возможно, типы, булево значение ОформлениеСтроки.ДанныеСтроки.Загружен приводится к строке, равной "Истина" или "Ложь". Второй аргумент также приводится к строке, равной "Истина". Далее функция "Найти" выполняет поиск подстроки (аргумент №2) в строке (аргумент №1) и возвращает позицию найденной подстроки, в результате имеем 1 если ОформлениеСтроки.ДанныеСтроки.Загружен = Истина, или 0 в противном случае.
    Получается

    Если 1 Тогда....
    или
    Если 0 Тогда....

    где 1 или 0 автоматически приводится 1Ской к типу булево, где Булево(1) = Истина, и Булево(0) = Ложь.

    ИГОГО:
    Условие выполняется, а гений с большой буквы "Г"... пугает меня, если честно, одним своим существованием о_О

    whiledoman, 17 Июля 2018

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

    −1

    1. 1
    Keyword Substitution

    Котаны, что мы думаем про keyword Substitution?

    Для тех, кто в танке: была в прошлом веке такая VCS RCS.
    В ней можно было в файле указать

    $Id$

    И в момент чекаута эта строчка заменялась на
    pitushok.txt,v 1.41 02.06.1991 petya

    Где 1.41 -- ревизия, дальше дата и login того кто делал checkout.
    Когда ты потом собирал дистрибутив из сырцов то у каждого файла всегда была инфа о том, кто (И когда) последний его трогал.
    Чуваки умели делать
    static char* id ="$id$";

    В результате чего эта инфа сохранялась в бинарниках, ее можно было выдрать через комманду ident ну или вывести как-то иначе.

    Субж перекочевал в CVS, оттуда в SVN, а в gitе он был признан порочной практикой и там так никто не делает.

    Опенбздуны, например, сидящие на CVS, до сих пор имеют профит. Там везде написано
    $OpenBSD: cat.1,v 1.35 2015/11/04 21:28:01 tedu Exp $


    ...а в линуксах -- нет.

    Знаете про keywords subst? Использовали? что думаете?

    roskomgovno, 17 Июля 2018

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

    0

    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
    /* Разработчик  http://webkiev.com/  Тарас КТЛ(Кучинский Тарас Леонидович)  г.Киев ул. Заболотного 26 */
    
    if($count_tovar!=0){
     $count_filtr=count($shop_m_tovar[0]);
    $i=0;while ($i < $count_tovar) {$ii=0; while ($ii < $count_filtr){$shop_filtr[$ii][$i]=$shop_m_tovar[$i][$ii];$ii++;}$i++;}
    if($tovar_sort=="1"){/*сортировка по возрастанию по цене*/
    array_multisort(
    $shop_filtr[6],$shop_filtr[7],$shop_filtr[8],$shop_filtr[9],
    $shop_filtr[10],$shop_filtr[11],$shop_filtr[12],$shop_filtr[13],$shop_filtr[14],$shop_filtr[15],$shop_filtr[16],$shop_filtr[17],$shop_filtr[18],$shop_filtr[19],
    $shop_filtr[20],$shop_filtr[21],$shop_filtr[22],$shop_filtr[23],$shop_filtr[24],$shop_filtr[25],$shop_filtr[26],$shop_filtr[27],$shop_filtr[28],$shop_filtr[29],
    $shop_filtr[30],$shop_filtr[31],$shop_filtr[32],$shop_filtr[33],$shop_filtr[34],$shop_filtr[35],$shop_filtr[36],$shop_filtr[37],$shop_filtr[38],$shop_filtr[39],
    $shop_filtr[40],$shop_filtr[41],$shop_filtr[42],$shop_filtr[43],$shop_filtr[44],$shop_filtr[45],$shop_filtr[46],$shop_filtr[47],$shop_filtr[48],
    $shop_filtr[49],
    $shop_filtr[50],$shop_filtr[51],$shop_filtr[52],$shop_filtr[53],$shop_filtr[54],$shop_filtr[55],$shop_filtr[56],$shop_filtr[57],$shop_filtr[58],$shop_filtr[59],
    $shop_filtr[60],$shop_filtr[61],$shop_filtr[62],$shop_filtr[63],$shop_filtr[64],$shop_filtr[65],$shop_filtr[66],$shop_filtr[67],$shop_filtr[68],$shop_filtr[69],
    $shop_filtr[70],
    $shop_filtr[0],$shop_filtr[1],$shop_filtr[2],$shop_filtr[3],$shop_filtr[4],$shop_filtr[5]
    );
    }
    if($tovar_sort=="2"){/*сортировка на убывание по цене*/
    array_multisort(
    $shop_filtr[6],SORT_DESC, $shop_filtr[7],$shop_filtr[8],$shop_filtr[9],
    $shop_filtr[10],$shop_filtr[11],$shop_filtr[12],$shop_filtr[13],$shop_filtr[14],$shop_filtr[15],$shop_filtr[16],$shop_filtr[17],$shop_filtr[18],$shop_filtr[19],
    $shop_filtr[20],$shop_filtr[21],$shop_filtr[22],$shop_filtr[23],$shop_filtr[24],$shop_filtr[25],$shop_filtr[26],$shop_filtr[27],$shop_filtr[28],$shop_filtr[29],
    $shop_filtr[30],$shop_filtr[31],$shop_filtr[32],$shop_filtr[33],$shop_filtr[34],$shop_filtr[35],$shop_filtr[36],$shop_filtr[37],$shop_filtr[38],$shop_filtr[39],
    $shop_filtr[40],$shop_filtr[41],$shop_filtr[42],$shop_filtr[43],$shop_filtr[44],$shop_filtr[45],$shop_filtr[46],$shop_filtr[47],$shop_filtr[48],
    $shop_filtr[49],
    $shop_filtr[50],$shop_filtr[51],$shop_filtr[52],$shop_filtr[53],$shop_filtr[54],$shop_filtr[55],$shop_filtr[56],$shop_filtr[57],$shop_filtr[58],$shop_filtr[59],
    $shop_filtr[60],$shop_filtr[61],$shop_filtr[62],$shop_filtr[63],$shop_filtr[64],$shop_filtr[65],$shop_filtr[66],$shop_filtr[67],$shop_filtr[68],$shop_filtr[69],
    $shop_filtr[70],
    $shop_filtr[0],$shop_filtr[1],$shop_filtr[2],$shop_filtr[3],$shop_filtr[4],$shop_filtr[5]
    );
    }
    $i=0;while ($i < $count_tovar) {$ii=0; while ($ii < $count_filtr) {$shop_m_tovar[$i][$ii]=$shop_filtr[$ii][$i];$ii++;}$i++;}
    }

    Сортировка товаров на чистом коде

    brevis, 16 Июля 2018

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