"PHP" / Говнокод #26507 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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
  88. 88
  89. 89
  90. 90
  91. 91
  92. 92
  93. 93
  94. 94
  95. 95
  96. 96
  97. 97
  98. 98
  99. 99
  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 r4wall, (Updated )

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

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

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

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

    А ещё у них ресурс $handle инициализируется в apiRequest(), а освобождается почему-то в exec_curl_request(). Как-то это попахивает.
    Ответить
    • так ведь ПХП это "worst from all worlds".
      От скриптушни мы возьмем анскильность
      Джава поделится с нами своей неебической вербозностью
      А няшная сишечка подарит там глобальные стейты и лоу-левел пишутню образца 1989-го года
      Ответить
      • При чём всё худшее они умудрились довести до ещё большего абсурда.
        Захотели скриптушиную анскильную типизацию? Ебанули такое приведение типов, что оператором "==" стало невозможно пользоваться безопасно даже при явном сравнении двух строк.
        Захотели вербозное жабье ООП? Сделали еще более вербозный синтаксис ("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 '';
                          }
                          Ответить
                            • Это пустота. Находится под бедроком, ниже минус шестьдесят четвёртого уровня. Наносит урон по два сердца в секунду.
                              Ответить
                                    • Похоже на название произведения Антуана де Сент-Экзюпери.
                                      Ответить
                                      • «Чапаев» Фурманова намного оригинальней Чапаева Пелевина, хотя бы потому, что не напрокат был взят из музея соцреализма, а впервые сработан по правилам агитпропа. Дзен-реализм Пелевина по сути все тот же соц., поскольку реализма как такового у Фурманова не больше, чем в древнеиндийских «Упанишадах». Переименовав «Упанишаду» в «Ебанишаду», Пелевин, конечно, найдёт понимание у читающих толп, так же, как нашел его Фурманов. Но доблестный комиссар не был трусливым постмодернистом, а был настоящим дзен-буддистом по Мао поскольку «не боялся трудностей, не боялся голода, не боялся смерти», чем и привлёк сердца.

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

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

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

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

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

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

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

                                          >Если мы не обернём вызов функции kukarek в void()
                                          Вон MAPTOBCKuu_nemyx тоже интуитивно ожидал что оно функция. А оно говно неконсистентное.
                                          Ответить
                                            • >т.е. я могу писать 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
                                              }
                                              Ответить
                                            • Да, но нет.
                                              > 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
                                                    Ответить
                                                • >К был функции применён оператор "нихуя".
                                                  Функции "нихуя" оператор применен был к
                                                  Ответить
                                                • Это монадический оператор очищения функции от последнего шанса стать чистой.
                                                  Ответить
                                              • И тем не менее этим можно пользоваться.
                                                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_query

                        mysqli::store_result
                        Ответить
                  • Врятли, но я думаю, что это сделали чтобы не ломать ABI (или как там оно у вас называется) и придумали mysql_real_escape_string, которая учитывает кодировку. Но вообще обе функции счас морально устарели.
                    Ответить
                  • Очевидно же, mysql_real_escape_string() делает все реально (т.е. по-настоящему), а просто mysql_escape_string() - это так, тренировка. Жалкая имитация
                    Ответить
  • У телеги ж есть throughput, а потом он шлёт лесом, и 500+ не возвращает, но он всё равно заботится о сервере чтоб не ддоснуть. Как это мило.
    Ответить
  • Ну и срань, зачем возиться с этим низкоуровневым говном ? То ли дело в ванильном
    fetch('pidor/sraker/').then
    Ответить
              • А что эти чёртовы бриташки неправильно этот глагол спрягают? Обычно же «-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+= '┘';
            Ответить
              • >https://joebo.github.io/j-emscripten/
                <'Какой багор )))'
                ┌─────────────────────────┐
                │Какой багор )))│
                └─────────────────────────┘

                Kokoй unskill )))
                Ответить
          • ████████████████████████████████████████
            █ Ye6oK                                █░
            ████████████████████████████████████████░
            ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
            Ответить
    • Может автор пришел из С, там так принято.
      Именно поэтому я за C++.
      Ответить
      • Да, именно там в С и принято
        >is_string($method)
        и так еще
        > $parameters["method"] = $method;
        Ответить

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

Помни, guest, за тобой могут следить!

    А не использовать ли нам bbcode?


    8