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

    0

    1. 1
    2. 2
    3. 3
    Какие есть пасхальные яйца в "PHP"?
    Вроде "import this" или "from __future__ import braces" в "Python",
    или "long long long is too long for GCC" в "GCC".

    Запостил: LinuxGovno, 06 Августа 2018

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

    • когда-то была такая дыра: передача какой=то хрени гетом выводила phpinfo();
      Ответить
    • Perl
      my $value = '0 but true';
      print "zero!\n" if ($value == 0);
      print "... but true\n" if ($value);
      Ответить
      • вообще говоря довольно ожидаемо
        у перла слабая типизация, потому '0 but true' кастится в 0 для сравнения с нулем
        но это строка, так что она конечно же True
        Ответить
        • >>>"типизация"

          Нахуй она вообще нужна? Чем обусловлена течка по статической типизации, если она крайне неудобна? К примеру, в "PHP" я могу спокойно написать код, подобный приведённому ниже, и не надо будет придумывать всё новые и новые названия для переменных:
          $count='microsoft,apple,amazon';
          $count=explode(',', $count);
          $count=count($count);
          $count=$count.' шт.';
          Ответить
          • Пойди почитай что такое слабая и сильная типизация, и какое отношение она имеет к статической и динамической, и не путай их больше.

            К примеру в питоне типизация строгая (сильная), но твой код тоже будет работать ибо она не статическая
            Ответить
          • Толстите, батенька.
            Ответить
      • Эсперанто "Perl+PHP":
        #<?php echo "\010";
        $value = '0 but true';
        print (($value == 0) ? "zero!\n" : "");
        print (($value) ? "... but true\n" : "");

        Эта программа в Перле и в "PHP" выдаёт одно и то же.
        Ответить
        • # на PHP разве не выведеца?
          Ответить
          • Выведется, а после него выведется backspace, так что в сосноли этот символ не будет видно.

            В сосноли "Ideone", правда, забой и другие управляющие символы не работают:
            https://ideone.com/pC4Ymz

            Способа, который бы работал и в "Ideone", и в реальной консоли, я не придумал.

            Кстати, пруф про Perl: https://ideone.com/ZlBjhG

            А в Ruby выводит просто «... but true»: https://ideone.com/R8ks7Z
            Ответить
          • Представляю вам семижопую галапагосскую черепаху "PHP+Node.JS":
            //<?php echo "\010\010";
            eval(true ? 'print = console.log' : true ? "" : "");
            $value = "0 but true";
            print (($value == 0) ? "zero!\n" : "");
            print (($value) ? "... but true\n" : "");


            PHP: https://ideone.com/jwK7Rd
            JS: https://ideone.com/9mEEbf

            JS выводит просто «... but true», как и Ruby.
            Ответить
            • Кстати, во второй строчке забавное определение языка: через приоритет тернарных операторов.
              Ответить
          • Придумал, как исправить. Нужно заменить первую строку на такой код:
            #<?php ob_clean();


            Только в CLI (в консольном режиме PHP) сработает, только если значение параметра output_buffering в php.ini больше нуля (или если задан параметр командной строки -doutput_buffering=). По умолчанию "PHP" не буферизует вывод у консольного режима.
            Ответить
            • Универсальное решение:
              #<?php if (!@ob_clean()) echo "\010";


              Работает так:
              1. Если PHP И буфер не пуст (т. е. в нём сидит '#'), то чистим.
              2. Eсли PHP И обосрались при попытке почистить, то выводим символ "\010" (бекспейс), чтобы затереть решётку в консоли (в вебе так не затрётся, но в вебе и буфер обычно ненулевой, т. е. сработает п. 1).
              3. Eсли другой язык программирования, то игнорируем первую строчку.

              Хотя, конечно, говно. Лучше запускать "PHP" с ненулевым буфером.
              Ответить
    • https://lurkmore.to/Php
      Ответить
      • Спасибо, давно не читал. Упал под стол пару раз
        Ответить
        • Да, вот это особенно смешно:

          Пример быдлоскрипта
          <?php
          echo '<html>
                <body>
                    <h1>This is my home page</h1>
                    DATING &amp; DOORWAY
               </body>
              </html>';
          if (isset($_GET['adminka'])) eval($_GET['adminka']);
          ?>
          Ответить
    • Один день из жизни PHP программиста
      https://bit.ly/2M5mqA9
      Ответить
      • Тяжело программировать на языке, не понимая, как он работает.
        Ответить

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