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

    +3

    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

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

    • Какие еще баги, кроме двойных кавычек ?
      Ответить
      • Я за C++, поэтому я не знаю ваш PHP, в вашем PHP что-ли влият на что-нибудь одинарные кавычки вместо двойных?
        Ответить
    • > curl_init
      > curl_close
      Какой «Цэ» )))

      А ещё у них ресурс $handle инициализируется в apiRequest(), а освобождается почему-то в exec_curl_request(). Как-то это попахивает.
      Ответить
      • показать все, что скрытоvanished
        Ответить
        • Именно поэтому я за «PHP».
          Ответить
        • При чём всё худшее они умудрились довести до ещё большего абсурда.
          Захотели скриптушиную анскильную типизацию? Ебанули такое приведение типов, что оператором "==" стало невозможно пользоваться безопасно даже при явном сравнении двух строк.
          Захотели вербозное жабье ООП? Сделали еще более вербозный синтаксис ("public int foo()" против "public function foo() : int"; "foo.bar()" против "foo::bar()" или "$foo->bar()").
          Захотели тоненькие лоу-левельные врапперы над сишными функциями? Обосрались с обработкой ошибок (в "РНР" есть как минимум 4 активно используемых способа сообщить об ошибке, в более-менее сложном скрипте практически невозможно гарантировать вызов всех необходимых nemyx_destroy()).
          Это не просто худшее из всех миров - это, блять, какая-то доведенная до абсурда пародия на всё худшее. Но страшнее всего то, что находятся макаки, которые на полном серьёзе говорят: "А што тут такова? Нармально жи зделоно". Как говорится, шутки смешные, но ситуация страшная.
          Ответить
        • Кста, чем мне нравится PHP, это тем, что там много функций как в C (ну и соответственно как в C++), в отличии от питушни типа *Script.
          Ответить
          • показать все, что скрытоvanished
            Ответить
            • Но зато как в С, и понятно что функция делает (ну разве что семантика и типизация может быть другой, но куда скриптухам до ручного (или псевдоручного) управления памятью (ни или до хоть какого-то управления памятью))
              Ответить
              • показать все, что скрытоvanished
                Ответить
                • Мне больше всего нравится "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 - это длина пожатых данных, разжатых с тегами или разжатых без тегов? :)
                  Ответить
                • 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().
                      Ответить
                      • Ну хоть функции вещественные, а не комплексные, а то травмируешь ненароком какую-то веб-макаку.
                        Ответить
                        • показать все, что скрытоvanished
                          Ответить
                        • Удваиваю, нужна 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 лет назад: «Мы сотканы из той же материи, что и наши сны».

                                              #вореции
                                              Ответить
                                      • А это книга в жанре фантастика?
                                        Ответить
                                        • Кхе-кхе-кхе, скоро не только книга, но и читатели станут "фантастикой". Апчхи!
                                          Ответить
                                  • показать все, что скрытоvanished
                                    Ответить
                                    • Зато есть void(0)
                                      Ответить
                                      • показать все, что скрытоvanished
                                        Ответить
                                        • Реальный пример:
                                          <a href="javascript:void(kukarek('pitushok'));">Кукарекнуть</a>

                                          Если мы не обернём вызов функции kukarek в void(), то при нажатии на ссылку содержимое страницы заменится на результат вызова функции kukarek. А если обернуть, то мы сможем получить побочные эффекты вызова, не портя страницу.
                                          Ответить
                                        • С помощью этой питушни ещё можно сокращать строчки, если прогарммисту платят за ширину кода, а не за длину:
                                          if (error) {
                                              reportToSportloto();
                                              return;
                                          }
                                          
                                          if (error) return void reportToSportloto();
                                          Ответить
                                • показать все, что скрытоvanished
                                  Ответить
                              • показать все, что скрытоvanished
                                Ответить
                                • Хуита, там достаточно атомов бодопода, чтобы поддерживать p-p реакцию для сбора еще атомов бодопода.
                                  Ответить
                            • показать все, что скрытоvanished
                              Ответить
                      • > mysqli_real_connect
                        > mysqli_real_query
                        Пиздец.
                        > :3
                        ^_^
                        Ответить
                    • Врятли, но я думаю, что это сделали чтобы не ломать ABI (или как там оно у вас называется) и придумали mysql_real_escape_string, которая учитывает кодировку. Но вообще обе функции счас морально устарели.
                      Ответить
                    • Очевидно же, mysql_real_escape_string() делает все реально (т.е. по-настоящему), а просто mysql_escape_string() - это так, тренировка. Жалкая имитация
                      Ответить
    • У телеги ж есть throughput, а потом он шлёт лесом, и 500+ не возвращает, но он всё равно заботится о сервере чтоб не ддоснуть. Как это мило.
      Ответить
    • Ну и срань, зачем возиться с этим низкоуровневым говном ? То ли дело в ванильном
      fetch('pidor/sraker/').then
      Ответить
      • Сразу видно, что ты быдлокодер.
        Ответить
        • Сразу видно, что ты ответил уёбку.
          Ответить
          • Быдлокодер не уёбок, быдлокодер просто быдлокодер. См. https://gcode.space/#!/search?user=phpBidlokoder2.
            Ответить
            • показать все, что скрытоvanished
              Ответить
              • >>> failed to sent request to the HTTP server
                Какой инглиш )))
                Ответить
                • А что эти чёртовы бриташки неправильно этот глагол спрягают? Обычно же «-d» — суффикс прошедшего времени, а не инфинитива. Они что, немцы, чтобы прошедшее время на «-t» оканчивать?
                  Ответить
                • показать все, что скрытоvanished
                  Ответить
                  • Итак, сколько всего вариантов образования прошедшего времени в английском?

                    Сходу вспоминаю такие:
                    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.

                    Ничего не забыл, или можно классифицировать точнее?
                    Ответить
              • Пиздец макака во втором треде.
                "Я сверстал хуйню, всё пошло по пизде, переверстайте мне нормально".
                Исходя из постановки вопроса, этот орангутан даже не пытался разобраться в своём говне. Стало быть, зряплату пусть тоже форум получает.
                Ответить
            • Не отвечай уебку
              Ответить
          • //=================================================================\\
            ||                  Внимание! Внимание! Внимание!                  ||
            ||                      Обнаружен ответ уёбку!                     ||
            || Просим всех сохранять спокойствие и оставаться на своих местах! ||
            \\=================================================================//
            Ответить
      • Может автор пришел из С, там так принято.
        Именно поэтому я за C++.
        Ответить
        • Да, именно там в С и принято
          >is_string($method)
          и так еще
          > $parameters["method"] = $method;
          Ответить
    • показать все, что скрытоvanished
      Ответить

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