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

    +2

    1. 001
    2. 002
    3. 003
    4. 004
    5. 005
    6. 006
    7. 007
    8. 008
    9. 009
    10. 010
    11. 011
    12. 012
    13. 013
    14. 014
    15. 015
    16. 016
    17. 017
    18. 018
    19. 019
    20. 020
    21. 021
    22. 022
    23. 023
    24. 024
    25. 025
    26. 026
    27. 027
    28. 028
    29. 029
    30. 030
    31. 031
    32. 032
    33. 033
    34. 034
    35. 035
    36. 036
    37. 037
    38. 038
    39. 039
    40. 040
    41. 041
    42. 042
    43. 043
    44. 044
    45. 045
    46. 046
    47. 047
    48. 048
    49. 049
    50. 050
    51. 051
    52. 052
    53. 053
    54. 054
    55. 055
    56. 056
    57. 057
    58. 058
    59. 059
    60. 060
    61. 061
    62. 062
    63. 063
    64. 064
    65. 065
    66. 066
    67. 067
    68. 068
    69. 069
    70. 070
    71. 071
    72. 072
    73. 073
    74. 074
    75. 075
    76. 076
    77. 077
    78. 078
    79. 079
    80. 080
    81. 081
    82. 082
    83. 083
    84. 084
    85. 085
    86. 086
    87. 087
    88. 088
    89. 089
    90. 090
    91. 091
    92. 092
    93. 093
    94. 094
    95. 095
    96. 096
    97. 097
    98. 098
    99. 099
    100. 100
    <?php
    
    define('BOT_TOKEN', '12345678:replace-me-with-real-token');
    define('API_URL', 'https://api.telegram.org/bot'.BOT_TOKEN.'/');
    
    function apiRequestWebhook($method, $parameters) {
      if (!is_string($method)) {
        error_log("Method name must be a string\n");
        return false;
      }
    
      if (!$parameters) {
        $parameters = array();
      } else if (!is_array($parameters)) {
        error_log("Parameters must be an array\n");
        return false;
      }
    
      $parameters["method"] = $method;
    
      header("Content-Type: application/json");
      echo json_encode($parameters);
      return true;
    }
    
    function exec_curl_request($handle) {
      $response = curl_exec($handle);
    
      if ($response === false) {
        $errno = curl_errno($handle);
        $error = curl_error($handle);
        error_log("Curl returned error $errno: $error\n");
        curl_close($handle);
        return false;
      }
    
      $http_code = intval(curl_getinfo($handle, CURLINFO_HTTP_CODE));
      curl_close($handle);
    
      if ($http_code >= 500) {
        // do not wat to DDOS server if something goes wrong
        sleep(10);
        return false;
      } else if ($http_code != 200) {
        $response = json_decode($response, true);
        error_log("Request has failed with error {$response['error_code']}: {$response['description']}\n");
        if ($http_code == 401) {
          throw new Exception('Invalid access token provided');
        }
        return false;
      } else {
        $response = json_decode($response, true);
        if (isset($response['description'])) {
          error_log("Request was successful: {$response['description']}\n");
        }
        $response = $response['result'];
      }
    
      return $response;
    }
    
    function apiRequest($method, $parameters) {
      if (!is_string($method)) {
        error_log("Method name must be a string\n");
        return false;
      }
    
      if (!$parameters) {
        $parameters = array();
      } else if (!is_array($parameters)) {
        error_log("Parameters must be an array\n");
        return false;
      }
    
      foreach ($parameters as $key => &$val) {
        // encoding to JSON array parameters, for example reply_markup
        if (!is_numeric($val) && !is_string($val)) {
          $val = json_encode($val);
        }
      }
      $url = API_URL.$method.'?'.http_build_query($parameters);
    
      $handle = curl_init($url);
      curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
      curl_setopt($handle, CURLOPT_CONNECTTIMEOUT, 5);
      curl_setopt($handle, CURLOPT_TIMEOUT, 60);
    
      return exec_curl_request($handle);
    }
    
    function apiRequestJson($method, $parameters) {
      if (!is_string($method)) {
        error_log("Method name must be a string\n");
        return false;
      }
    
      if (!$parameters) {
        $parameters = array();
      } else if (!is_array($parameters)) {
        error_log("Parameters must be an array\n");

    Запостил: r4wall, 17 Марта 2020

    Комментарии (123) RSS

    • Какие еще баги, кроме двойных кавычек ?
      Ответить
      • Я за C++, поэтому я не знаю ваш PHP, в вашем PHP что-ли влият на что-нибудь одинарные кавычки вместо двойных?
        Ответить
        • )в теории двойные каыычки медленее, бо интерполируются
          По факту -- тыж понимаешь:)
          Ответить
        • Двойные кавычки тормозят.

          В одинарных кавычках, в отличие от двойных, не производится строковая интерполяция:
          $x = 42;
          echo "x = $x"; // x = 42
          echo 'x = $x'; // x = $x
          Ответить
        • Это всё потому что в пхп память не шарится и на каждый запрос заново запускается.

          По-моему это каждый петух знает.
          Ответить
    • > curl_init
      > curl_close
      Какой «Цэ» )))

      А ещё у них ресурс $handle инициализируется в apiRequest(), а освобождается почему-то в exec_curl_request(). Как-то это попахивает.
      Ответить
      • так ведь ПХП это "worst from all worlds".
        От скриптушни мы возьмем анскильность
        Джава поделится с нами своей неебической вербозностью
        А няшная сишечка подарит там глобальные стейты и лоу-левел пишутню образца 1989-го года
        Ответить
        • Именно поэтому я за «PHP».
          Ответить
        • При чём всё худшее они умудрились довести до ещё большего абсурда.
          Захотели скриптушиную анскильную типизацию? Ебанули такое приведение типов, что оператором "==" стало невозможно пользоваться безопасно даже при явном сравнении двух строк.
          Захотели вербозное жабье ООП? Сделали еще более вербозный синтаксис ("public int foo()" против "public function foo() : int"; "foo.bar()" против "foo::bar()" или "$foo->bar()").
          Захотели тоненькие лоу-левельные врапперы над сишными функциями? Обосрались с обработкой ошибок (в "РНР" есть как минимум 4 активно используемых способа сообщить об ошибке, в более-менее сложном скрипте практически невозможно гарантировать вызов всех необходимых nemyx_destroy()).
          Это не просто худшее из всех миров - это, блять, какая-то доведенная до абсурда пародия на всё худшее. Но страшнее всего то, что находятся макаки, которые на полном серьёзе говорят: "А што тут такова? Нармально жи зделоно". Как говорится, шутки смешные, но ситуация страшная.
          Ответить
          • Обычно множество языков, известных таким макакам состоит из PHP. По этой причине им довольно трудно видеть его недостатки.
            Ответить
        • Кста, чем мне нравится PHP, это тем, что там много функций как в C (ну и соответственно как в C++), в отличии от питушни типа *Script.
          Ответить
          • И с совершенно другой семантикой:)
            Ответить
            • Но зато как в С, и понятно что функция делает (ну разве что семантика и типизация может быть другой, но куда скриптухам до ручного (или псевдоручного) управления памятью (ни или до хоть какого-то управления памятью))
              Ответить
              • > и понятно что функция делае
                что делает fpassthru? А mysql_real_escape_string?
                Ответить
                • Мне больше всего нравится "gzgetss" https://www.php.net/manual/ru/function.gzgetss.php
                  Кому вообще понадобилась такая функция?
                  Там еще няшный пример использования в доке
                  <?php
                  $handle = gzopen('somefile.gz', 'r');
                  while (!gzeof($handle)) {
                     $buffer = gzgetss($handle, 4096);
                     echo $buffer;
                  }
                  gzclose($handle);
                  ?>

                  Угадайте, 4096 - это длина пожатых данных, разжатых с тегами или разжатых без тегов? :)
                  Ответить
                  • Ну в стиле C, это максимальный размер буффера (результата функции).
                    Ответить
                  • Небось длина окна злой злиб, которая влияект как оно детектит формат.
                    Ответить
                  • >gzgetss — Возвращает строку из указателя gz-файла и удалить HTML-теги


                    а есть такая функция, чтоб еще сразу постила во вконтакте и писала на email
                    Ответить
                • mysql_real_escape_string то вполне очевидно, а вот fpassthru фиг его знает (но выучить не проблема). Ведь фиг новичок догадается, что в C делает calloc, alloca, itoa...
                  Ответить
                  • > mysql_real_escape_string то вполне очевидно
                    Много «новичков» догадаются о том, почему оно real, а mysql_escape_string() — не real?
                    Ответить
                    • Забавно, что в новом модуле "mysqli" такое именование оставили (наверное, что бы не испугать шаблонизаторщиков отсутствием слова real). Так же появился синоним mysqli_escape_string(), но в той же доке его не рекомендуют использовать, лол. :3
                      https://www.php.net/manual/ru/mysqli.summary.php
                      Так же появились новые реальные функции: mysqli_real_connect(), mysqli_real_query().
                      Ответить
                      • Ну хоть функции вещественные, а не комплексные, а то травмируешь ненароком какую-то веб-макаку.
                        Ответить
                        • mysql_integer_escape_string
                          mysql_rational_escape_string

                          ну, поехали
                          mysql_string_escape_real
                          mysql_string_escape_boolean
                          mysql_boolean_escape_reference

                          mssql_lpvoid_escape_dlgproc
                          Ответить
                        • Удваиваю, нужна mysql_int_escape_sring чтобы работало быстрее
                          Ответить
                          • Реализовал функцию, на 100% защищающую от SQL-инъекций и XSS. Одинаково хорошо работает с любыми данными.
                            function mysql_void_escape_string($s)
                            {
                                return '';
                            }
                            Ответить
                            • Не знаю что такое «void».
                              Ответить
                              • Это пустота. Находится под бедроком, ниже минус шестьдесят четвёртого уровня. Наносит урон по два сердца в секунду.
                                Ответить
                                • А void*?
                                  Ответить
                                  • Это пустота со звёздочкой.
                                    Ответить
                                    • Керниган, Ритчи и Пустота со звёздочкой.
                                      Ответить
                                      • Похоже на название произведения Антуана де Сент-Экзюпери.
                                        Ответить
                                        • «Чапаев» Фурманова намного оригинальней Чапаева Пелевина, хотя бы потому, что не напрокат был взят из музея соцреализма, а впервые сработан по правилам агитпропа. Дзен-реализм Пелевина по сути все тот же соц., поскольку реализма как такового у Фурманова не больше, чем в древнеиндийских «Упанишадах». Переименовав «Упанишаду» в «Ебанишаду», Пелевин, конечно, найдёт понимание у читающих толп, так же, как нашел его Фурманов. Но доблестный комиссар не был трусливым постмодернистом, а был настоящим дзен-буддистом по Мао поскольку «не боялся трудностей, не боялся голода, не боялся смерти», чем и привлёк сердца.

                                          http://dark.gothic.ru/alina/obraz/pustota.htm
                                          Ответить
                                          • Не забывайте маркировать вореции тегом «#вореции».
                                            Ответить
                                            • Пелевин боится всего, и больше всего читательского непонимания.. Поэтому все 400 страниц он жуёт и жуёт один и тот же сюжет о пустоте из дзенского агитпропа, боясь, что читатель так и не постигнет глубину высказывания, что наша жизнь есть сон. Тут и новые русские со своими разборками, и обстрел Белого дома, и пьяный Ельцин, и московские проститутки, загримированные под гейш, даже пошлое харакири в одной из японских фирм. Да читали мы, читали и драму Кальдерона «Жизнь — сон», и Гамлета, произнёсшего 500 лет назад: «Мы сотканы из той же материи, что и наши сны».

                                              #вореции
                                              Ответить
                                      • А это книга в жанре фантастика?
                                        Ответить
                                        • Кхе-кхе-кхе, скоро не только книга, но и читатели станут "фантастикой". Апчхи!
                                          Ответить
                                  • какая-то ненужная питушня из языка для калькуляторов

                                    Современный программист должен писать код на JavaScript (только так можно стать успешным) а тем нет никаких "void*"
                                    Ответить
                                    • Зато есть void(0)
                                      Ответить
                                      • The void operator evaluates the given expression and then returns undefined.

                                        ахахахаха. зачем? зачем?
                                        Ответить
                                        • Реальный пример:
                                          <a href="javascript:void(kukarek('pitushok'));">Кукарекнуть</a>

                                          Если мы не обернём вызов функции kukarek в void(), то при нажатии на ссылку содержимое страницы заменится на результат вызова функции kukarek. А если обернуть, то мы сможем получить побочные эффекты вызова, не портя страницу.
                                          Ответить
                                          • Кажется что за такой код надо пиздить арматуриной, нет?
                                            Ответить
                                          • Почему не просто onclick?
                                            Ответить
                                            • 1. Привычка, выработанная годами. Кажется, раньше onclick не было.

                                              2. Совместимость со старым говном вроде «Webkit» в старых «iOS» или с какими-то версиями «IE», которые не обрабатывали событие onclick у дивов, если не установить в CSS свойство cursor:pointer.
                                              Ответить
                                        • С помощью этой питушни ещё можно сокращать строчки, если прогарммисту платят за ширину кода, а не за длину:
                                          if (error) {
                                              reportToSportloto();
                                              return;
                                          }
                                          
                                          if (error) return void reportToSportloto();
                                          Ответить
                                          • if (error) { reportToSportloto(); return }
                                            Ответить
                                          • >if (error) return void reportToSportloto();

                                            Кстати вызов функции оператора void без скобочек в js меня жутко бесит.

                                            >Если мы не обернём вызов функции kukarek в void()
                                            Вон MAPTOBCKuu_nemyx тоже интуитивно ожидал что оно функция. А оно говно неконсистентное.
                                            Ответить
                                            • Хм, т.е. я могу писать void function f() { .. }?
                                              Ответить
                                              • >т.е. я могу писать void function f() { .. }?
                                                Можно писать void void void void 1
                                                Ответить
                                              • Ага
                                                void function hitler(){ 
                                                  return eval(hitler), void hitler
                                                , void hitler, {hitler: hitler}
                                                , void hitler, delete hitler
                                                , hitler, hitler, hitler, hitler
                                                }
                                                Ответить
                                                • https://www.youtube.com/watch?v=JTLeBybJhSo
                                                  Ответить
                                                  • eval Гитлер через Гитлер
                                                    https://www.youtube.com/watch?v=SEHhxL4TzOk
                                                    Ответить
                                                    • ЗАПРЕТ ХАРАМ НАЛОЖЕНО ВЕТО НА ОТВЕТЫ УЁБКАМ
                                                      Ответить
                                                    • https://www.huffpost.com/entry/hitler-teapot-controversy_n_3416262
                                                      Ответить
                                              • Да, но нет.
                                                > function fuz() {};
                                                undefined
                                                > void function fuz2() {};
                                                undefined
                                                > fuz();
                                                undefined
                                                > fuz2();
                                                Thrown:
                                                ReferenceError: fuz2 is not defined
                                                >
                                                Ответить
                                                • Логично. Он же спрашивал, можно ли писать?
                                                  К функции был применён оператор "нихуя".
                                                  Ответить
                                                  • Теперь надо добавить функцию с соврешенно другой семантикой, как String() и new String();

                                                    Так же нужно добавить в язык возможность вызова функций без скобочек как в руби или перле.
                                                    Ответить
                                                    • >Теперь надо добавить функцию с соврешенно другой семантикой, как String() и new String();

                                                      js когда дело касается "ООП"-операторов delete/new вообще какая-то странная, неконсистентная херь

                                                      Так удалить объект можно
                                                      window.zz=function(){}
                                                      zz //function zz()
                                                      delete zz //true
                                                      zz() //ReferenceError: zz is not defined


                                                      Так нельзя
                                                      function zz(){}
                                                      zz // function zz()
                                                      delete zz //false
                                                      zz //function zz()
                                                      delete window.zz //false


                                                      А дальше начинается ещё более странное
                                                      window.zz=function(){console.log(3)}
                                                      delete zz //false
                                                      zz() //3

                                                      То есть функция из window.zz уже не удаляется, если объявили function zz
                                                      Но при этом она таки обновляется значением window.zz
                                                      Ответить
                                                  • >К был функции применён оператор "нихуя".
                                                    Функции "нихуя" оператор применен был к
                                                    Ответить
                                                  • Это монадический оператор очищения функции от последнего шанса стать чистой.
                                                    Ответить
                                                    • А ещё в js можно писать вот так:
                                                      +void+1+void+2+delete+1+void-4*delete-2
                                                      Ответить
                                                • И тем не менее этим можно пользоваться.
                                                  void function(hilter){
                                                  	console.log(hilter)
                                                  }(void delete hitler)
                                                  //undefined

                                                  Кстати полезное свойство: объявить функцию не засирая глобальный скоуп
                                                  void function h(hilter){
                                                      console.log(h)
                                                  }(void delete hitler)
                                                  //function h
                                                  Ответить
                                            • Томущо это однарный оператор.
                                              Ответить
                                          • return 
                                            void void void void void void void void void void
                                            void void void void void void void void void void
                                            void void void void void void void void void void
                                            void void void void void void void void void void
                                            void void void void void void void void void void
                                            void void void void void void void void void void
                                            void void void void void void void void void void
                                            void void void void void void void void void void
                                            void void void void void void void void void void
                                            void void void void void void void void void void
                                            void void void void void void void void void void
                                            void void void void void void void void void void reportToSportloto();
                                            Ответить
                                • Это из майнкрафта чтоли?

                                  Чертовы милениалы, я не знаю ваших игрушек
                                  Ответить
                              • Войды это такие огромные дыры во вселенной, где нету звезд.
                                Ответить
                                • Хуита, там достаточно атомов бодопода, чтобы поддерживать p-p реакцию для сбора еще атомов бодопода.
                                  Ответить
                            • ОЕ ПФЧЕЮБК ХЈВЛХ
                              Ответить
                      • > mysqli_real_connect
                        > mysqli_real_query
                        Пиздец.
                        > :3
                        ^_^
                        Ответить
                        • конечно пиздец, вот объектно-ориентированная версия
                          mysqli::real_query

                          mysqli::store_result
                          Ответить
                    • Врятли, но я думаю, что это сделали чтобы не ломать ABI (или как там оно у вас называется) и придумали mysql_real_escape_string, которая учитывает кодировку. Но вообще обе функции счас морально устарели.
                      Ответить
                    • Очевидно же, mysql_real_escape_string() делает все реально (т.е. по-настоящему), а просто mysql_escape_string() - это так, тренировка. Жалкая имитация
                      Ответить
    • У телеги ж есть throughput, а потом он шлёт лесом, и 500+ не возвращает, но он всё равно заботится о сервере чтоб не ддоснуть. Как это мило.
      Ответить
    • Ну и срань, зачем возиться с этим низкоуровневым говном ? То ли дело в ванильном
      fetch('pidor/sraker/').then
      Ответить
      • Сразу видно, что ты быдлокодер.
        Ответить
        • Сразу видно, что ты ответил уёбку.
          Ответить
          • Быдлокодер не уёбок, быдлокодер просто быдлокодер. См. https://gcode.space/#!/search?user=phpBidlokoder2.
            Ответить
            • Это еще не быдло
              Быдла вот
              https://phpclub.ru/talk/threads/%D0%BF%D1%80%D0%BE%D0%B1%D0%BB%D0%B5%D0%BC%D1%8B-%D1%81-%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%BE%D0%B9-symfony.86532/


              Вот тоже годные
              https://phpclub.ru/talk/threads/%D0%BA%D0%B0%D0%BA-%D0%B8%D1%81%D0%BF%D1%80%D0%B0%D0%B2%D0%B8%D1%82%D1%8C.86603/
              Ответить
              • >>> failed to sent request to the HTTP server
                Какой инглиш )))
                Ответить
                • А что эти чёртовы бриташки неправильно этот глагол спрягают? Обычно же «-d» — суффикс прошедшего времени, а не инфинитива. Они что, немцы, чтобы прошедшее время на «-t» оканчивать?
                  Ответить
                  • Разумеется, нужно "failed to send", Теймураз по памяти писал.

                    Кстати, Теймураз I (1589 — 1663) — царь Кахетии в 1606—1648 и Картли в 1625—1632 годах. Принадлежал к роду Багратиони.
                    Ответить
                • Именно по этому я за галогы типа put и cut
                  Ответить
                  • Итак, сколько всего вариантов образования прошедшего времени в английском?

                    Сходу вспоминаю такие:
                    1. Застывшие формы, которые во всех временах выглядят одинаково. Реальные примеры: put и cut.

                    2. «Английские правильные». Реальный пример: stay — stayed —stayed.

                    3. Маскирующиеся под немецкие правильные. Реальные примеры: send — sent — sent, lose — lost — lost.

                    4. Маскирующиеся под немецкие неправильные. Реальные примеры: break — broke — broken, speak — spoke — spoken.

                    5. «Английские неправильные». Вообще не поймёшь, что с ними происходит. Реальные примеры: be — was — been, go — went — gone.

                    Ничего не забыл, или можно классифицировать точнее?
                    Ответить
                    • 2 и 3 это одного поля ягод кмк, просто кто-то оглох (как в немецком), а кто-то -- нет.
                      Ответить
                    • > 5. «Английские неправильные». Вообще не поймёшь, что с ними происходит. Реальные примеры: be — was — been, go — went — gone.
                      Так ведь и в немецком с ними аналогично: sein — war — gewesen, gehen — ging — gegangen.
                      Ответить
                      • Вообще, пункты 3, 4, 5 правильнее наверно назвать маскирующимися под «немецкие слабые», «немецкие сильные», «немецкие неправильные» соответственно.
                        Ответить
                        • Так ноги-то оттуда и растут, английский же германской группы

                          Сильные глаголы не меняли своей формы, слабые -- меняли.

                          Я вобще не понимаю зачем Иканус разделил немецкие и английские глаголы.
                          Норманны нафранкофонили англичанам существительные, но не окончания глаголов кмк

                          зы: утверждаеца, что
                          Practically all English irregular verbs come from Old English or derive from strong Germanic words. Other foreign words that joined English in later times follow the standard –ed pattern.

                          Короче, новый код пишут через нормальые API, а старое легаси говно с костылями никак не выпилить
                          Ответить
              • Пиздец макака во втором треде.
                "Я сверстал хуйню, всё пошло по пизде, переверстайте мне нормально".
                Исходя из постановки вопроса, этот орангутан даже не пытался разобраться в своём говне. Стало быть, зряплату пусть тоже форум получает.
                Ответить
                • Типичный пыхер, да
                  Ответить
                • Та это может вообще хозяин этой сушилки, который решил сэкономить даже на макаке
                  Ответить
                  • А у вас бывают такие случаи, чтобы хозяева сушилки решили сами сделать приложение под ios, и пошли бы на форум писать "чото ничо не работает, в чем может быть делоо?"
                    Ответить
                    • Хз, если им рассказали про Cordova или Flutter, то вполне. Но я на таких форумах не сижу
                      Ответить
            • Не отвечай уебку
              Ответить
          • //=================================================================\\
            ||                  Внимание! Внимание! Внимание!                  ||
            ||                      Обнаружен ответ уёбку!                     ||
            || Просим всех сохранять спокойствие и оставаться на своих местах! ||
            \\=================================================================//
            Ответить
            • Какая псевдографика )))

              Отсыплю символов
              var head='┌',mid='├',foot='└';
                  for (var i=1;i<N;++i){
                      var col=(~cols.indexOf(i));
                      head+= col ? '┬' : '─';
                      mid += col ? '┼' : '─';
                      foot+= col ? '┴' : '─';
                  }
                      head+= '┐';
                      mid += '┤';
                      foot+= '┘';
              Ответить
              • Перевёл на J:
                <'Какой багор )))'
                Ответить
                • >https://joebo.github.io/j-emscripten/
                  <'Какой багор )))'
                  ┌─────────────────────────┐
                  │Какой багор )))│
                  └─────────────────────────┘

                  Kokoй unskill )))
                  Ответить
            • ████████████████████████████████████████
              █ Ye6oK                                █░
              ████████████████████████████████████████░
              ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
              Ответить
              • По запросу Ye6ok гугл нашел
                https://vk.com/id82499130

                микронаушникик, ихихихи, это же блядь из Приключений Шурика за 1961 год.

                https://www.youtube.com/watch?v=TuSgWqmN2gs
                Ответить
      • Может автор пришел из С, там так принято.
        Именно поэтому я за C++.
        Ответить
        • Да, именно там в С и принято
          >is_string($method)
          и так еще
          > $parameters["method"] = $method;
          Ответить
    • вирус взял гет 10K :(
      Ответить

    Добавить комментарий