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

    +146

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    $this->load->model('Bimail');
    			$this->Bimail->beautymail(
    					$this->adminmail,
    					$this->input->post('mail'),
    					$$this->adminsubject,
    					$this->input->post('name'),
    					$this->input->post('text'));
    			$this->redirect('conn/ok');

    Как видите я написал два знака доллара на 5 строке. При таком вызове фукции у мея виснет httpd.exe (это Apach). Кто может объяснить почему?
    И еще: почему РНР не выдает ошибки?
    *Провернуть такую ошибку в простом коде не получилось.

    Запостил: increazon, 05 Августа 2010

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

    • $$i — это переменная переменная. Т.е. переменная с изменяемым именем. А вот как хренеет пых в ответ на то, что в качестве имени переменной — объект (в смысле, его свойство) — это уже другой вопрос. Наверное, потому и не выдаёт ошибок, что формально так можно, а фактически — вплоть до завеса апача.
      Ответить
      • показать все, что скрытоА как использовать эту возможность, и зачем? Пример кода можно?
        Ответить
        • Я ни разу не пользовался. Знаю только, что возможность существует. И помню, что когда о ней читал, то и примеры приводились. Так что если интересно — гугль в помощь.
          Ответить
        • вернитесь обратно в школу. оба. вещь прикольно. рульно фурыкает. только злоупотреблять не стоит а то потом фиг свой говнокод когда отдебажишь
          Ответить
        • $varname = "foo";
          $foo = 5;
          echo $$varname; // 5

          а вот зачем использовать не понятно, самый великий костыль пхп
          Ответить
          • Для динамического петушения, разумеется.
            Ответить
            • В какой бы пост не глянул, только о петушении и речь.
              Ответить
            • Ого! Слово «петушение» в 2010-м году, т. е. ещё до форса «питушни».
              Ответить
              • Надо провести петуализ текстов ГК: искать всю питушню с кобенацией "п*ту" и смотреть, что там было во времени.
                Ответить
                • Эту тему с питушнёй и питухами Царь придумал.

                  > с кобенацией "п*ту"

                  Кстати «питушки» это вчерашний день, в последних царских посланиях они эволюционировали в «птушников».
                  Ответить
                  • > в последних царских посланиях они эволюционировали в «птушников».
                    Математику в ПТУзах учат только в раш-ке.
                    Ответить
                    • Он просто мутировал, чтобы банхаммером не так больно били.
                      Мы-то понимаем что значит п-тушок.

                      >в ПТУзах
                      Наконец-то я понял что означает загадочный термин «питуз»!
                      Ответить
                  • Царь с Бормандом же только придали питушне популярности, а до этого она концентрировалась по углам и готова была вылупиться.
                    Ответить
                    • Ты что, читаешь все комментарии с июня?
                      Ответить
                      • Нет, я обнаружил, что почта, к которой привязан ГК, не умерла, и решил посмотреть, что мне писали, пока меня не было.
                        Ответить
                • Ну как, провёл петуанализ?
                  Ответить
                  • Не провёл. Хотя, все данные за то время есть, можно и провести.
                    Ответить
            • блядть

              слово "питущение" было еще 10 лет назад1!!
              Ответить
          • показать все, что скрыточто же получается? $$somevar равняется последней созданной или присвоеной переменной? Это идиотизм, и зачем знать о таком? Спасибо за пример.
            Ответить
            • Интересное умозаключение.
              Как пришел к такому результату?
              Ответить
            • омг, самый тривиальный пример, который смог бы понять даже гуманитарий...

              но видать реальным пОцанам этого не понять... xD
              Ответить
          • Почему костыль? Когда-то я видел код, где это применялось и было действительно нужно.
            А если и не нужно, то не мешает
            Ответить
          • Всё чем пользоваться не умеете - для вас, мартышек зло
            Ответить
          • Это называется "ссылка", чувак:)
            Ответить
            • Ссылка в пэхапэ по амперсанду, не?
              Это просто что-то вроде рефлексии, всё равно что сделать globals()[variable_name] в «Питоне».
              Ответить
              • да, я еблан. Это можно использовать как ссылку в рамках одной области видимости, но это костыль
                Ответить
                • Ничего, ты просто перепутал. Бывает.
                  Ответить
                  • с перлом перапутал
                    our $var = "foo";
                    our $refVar = \$var;
                    
                    print ${$refVar}, ${$main::{'var'}};


                    тут правда всё гораздо тоньше. refVar это реально ссылка, а второе это символ в пакете main (именно потому our), который разыменовали
                    Ответить
        • И как раз только что встретил пример кода. Движок писался из расчёта на register_globals, потом register_globals на хостинге выключили и человек не мудрствуя лукаво сделал такой костылик чтобы не переписывать свой код.
          while($elem=each($_GET)){
            $var=$elem["key"];
            $$var=$elem["value"];
          }
          while($elem=each($_POST)){
            $var=$elem["key"];
            $$var=$elem["value"];
          Ответить
          • круто, давно мне не попадалась конструкция while each
            Ответить
            • А там движок очень старый. Не то что MVC, а просто без ООП. Смесь html с php, запросы к базе прям на месте пишутся. В общем, back to php 3-4.
              Ответить
              • дауш, переписывать пришлось бы много. легче по-быстрому подставить костыль
                Ответить
              • Я весной такой сайт написал для диплома, и конечно же, денег. Я имею ввиду смесь HTML + PHP + SQL в куче. Ну как не умничай а поднять самому с первого раза новый фреймворк с CMS очень сложно. ( а использовать Drupal || MZZ было запрещено)
                Ответить
                • mzz вроде бы как раз фреймворк, а не cms. Не суть.
                  Будь готов к тому, что если в будущем этот сайт кому-то постороннему понадобится сопровождать и дорабатывать, на тебя в глаза или за глаза выльются тонны грязи.
                  Ответить
                  • Я и имел ввиду что фреймворки или цмс были запрещены. Я сам уже не разберу что там и как сделано, это просто ужас. Но сюда адрес сайта не дам, а то доброжелатели будут испытывать на прочность, еще сломают)))
                    Ответить
                  • Какой багор )))
                    Ответить
                • а тот чел, потом диплом защитить смог ? ))))))))))
                  Ответить
          • в отдельный пост ))

            как програмить, если хотим, чтоб нас сломали ))
            Ответить
            • Зачем в отдельный, если это всего лишь пляски вокруг register_globals?
              Да и насчёт “сломали” — всё-таки больше обобщение. В каком-то конкретном случае вполне может оказаться и без дыр.
              Ответить
          • each — это самая ненужная функция. Не надо её использовать. Мы не в 1971-м году живём, чтобы пользоваться функциями с глобальным скрытым счётчиком.
            Ответить
            • Мне вот интересно, что за нашествие некрофилов на говнокод пришло?
              Ответить
            • В пых он протек из перла, там each тоже стейтфул.

              Перл вообще богат на инструкции с глобальным стейтом, этакие "статические автоматические переменные". Одну из них (флип флоп) перл унаследовал от awk, и передал руби:)
              Ответить
    • мде
      все те же рачки
      все те же пхп-говноеды
      ничего не меняется
      Ответить
      • >>все те же пхп-говноеды
        +1

        как по мне так вообще почти все с пометкой - "помогите - не работает", "вот моя лаба" и "задание сделать то-то -- зацените как я просрался"- в минус и на перегной - за унылостью..
        Ответить
        • скучно тут стало
          да еще неадекваты расплодились =(
          Ответить
          • показать все, что скрытоТак ты неадекват номер 1. Только пиздиш, а сам наверное нихрена не знаешь. (меньше меня точно). Баба базарная, ты наверно на базаре и работаешь.
            Ответить
            • в попе снова свербит, пхп-раб? привыкнешь

              угу меньше тебя, особенно вспоминая сколько раз я тебя говном кормил, не наелся?

              показательно уже то, что ты среагировал на мой пост о неадекватах, сразу видно - попе больно, когда такие посты читаешь.
              Ответить
              • показать все, что скрытода какой я раб? это мой выбор - РНР, и пишу я себе код за бесплатно. Ну а таких как ты я знаю. Можешь умничать только в интернете, в чате. А вдруг наедут на тебя "реальные" пацаны, то и слова в тему не сможешь сказать. Так что заканчивай, иди на улице потусуйся.
                Ответить
                • >это мой выбор - РНР, и пишу я себе код за бесплатно.
                  сколько раз тебе повторять, правильно не 'для себя за бесплатно(sic!)', а 'я обезьяна, сижу на шее у предков, мозгов хватило только на похапэ', прими уже правду, хотя я понимаю - тебе легче нассать себе в глаза.

                  только что с улички, а поцанчики на меня не наезжают, да и нету их тут нихуя, а ты, видать, из элитного 'раёна' Бутово? лол =)
                  Ответить
                • вебкалл, это ты?
                  Ответить
                • > реальные пОцаны
                  fixed
                  Ответить
              • >в попе снова свербит, пхп-раб?

                возвращайся на говнокод, будем ставить на место зазнавшееся пыхобыдло
                Ответить
                • Если запятую убрать, то будет похоже на какую-то замануху на программерские курсы )))
                  Ответить
                  • Или в очередной заебавший стартап:

                    Ты -- ниндзя-девопёс, а в попе снова свербит пхп-раб?

                    Приходи к нам, будем ставить на место зазнавшееся пыхобыдло.
                    Ответить
        • Поддерживаю. По мне так всяческие "помогите не работает" надо сразу же удалять без разговоров и всё. Оффтоп есть оффтоп, надо, как тут наш сеошник выдал, блюсти политику поддержания высокой релевантности контента.
          Ответить
          • Политика поддержания высокого качества говна.
            Ответить
            • Если совсем худо, ты нажми на кнопочку... Это нужно лишь для самоуспокоения. Возможно, эта кнопка запускает ядерные боеголовки.
              Ответить
        • +1, похоже история БАШа повторяется...

          - осталось получить премию рунета и ГК утонет в унынии =(
          Ответить
    • rtfm, rtfm и еще раз rtfm.
      Ответить
    • заебали ньюфаги
      Ответить
      • какие ньюфаги, это скиллованый говнокодер инкризон, забыли штоле о0
        слив раз http://govnokod.ru/3565
        слив два http://govnokod.ru/3426
        дохера их!
        Ответить
        • >>>скиллованый говнокодер инкризон
          да его в мемы гкода уже можно записывать вместе с Max Pro и Уебкиллом...

          >>>показательно уже то, что ты среагировал на мой пост о неадекватах
          )))) такие посты как лакмус...
          вон в каком-то треде двое заминусовали ф-цию isPidor(), что кагбе намекает...
          Ответить
          • OMG!! их уже трое )))
            Такие провокационные посты помогают отдетектить ахтунгов и прочую нечисть.
            Ответить
            • насамом деле их больше, так как наверняка кто-то и плюсовал
              Ответить
              • угу, а кто и не плюсовал, и не минусовал, те латентные...
                Ответить
            • дык даже http://govnokod.ru/user/1730 =)
              Ответить
              • показать все, что скрытоУвы я стал популярен. Уже кто - то создал фейковый профайл. Молодцы так держать. Популярность не повредит, я на ней заработаю.
                Ответить
                • сорри, ты уже здесь распиарен как образцовый говнокодер
                  Ответить
                • http://www.youtube.com/user/Increazon#p/a

                  Имя: Volodymyr
                  A am here just for interest for me. 
                  But now i updating my profile, make it less virtual, to find some interesting friends, links. 
                  I love U. S. America.

                  Место жительства: San Francisko

                  И ВНЕЗАПНО!

                  http://www.weblancer.net/users/Increazon/projects/
                  П. Владимир (Increazon)
                  22 года

                  * Украина (!)
                  * Полтава (!)

                  Хохол лижет анусы пиндосам и мечтает о Сан Полтава :D
                  Ответить
                  • АХАХАХАХА дианон success

                    >San FrancisKo
                    я валяюсь =) ошибка в названии города своей мечты, пять баллов нах.
                    Ответить
                    • Вот смотри в очко на свой галимый город мечты http://www.webmarin.com/
                      Ответить
                  • показать все, что скрытоОбразцовый идиоты. Начинай искать мой говно сайт по Whois. там тоже есть имя.
                    Ответить
                    • А вообще пускай. Может вы еще папаци наймете чтобы следили за мной. Кто его знает, может я голый хожу по квартире))
                      Ответить
                  • Первый пост, где тебя не заминусовали.. Мои поздравления... )))
                    Тебе больше кампроматы копать а не кодом какать.
                    Ответить
        • в чужом коде кило говна видят, а в своем не замечают... где тут скилованность, если про ссылочные переменные мы не в курсе не то что в пехепе, но и в принципе?
          Ответить
    • Пыхосрач детектед.
      Ответить
    • >>И еще: почему РНР не выдает ошибки?
      Инкрезон прекрасен
      Ответить
    • добавте кто-то еще 1 минус, дабы это ГК исчезло навек.
      Ответить
    • а шо таки в похапэ нету ссылок? ($$ - оператор разыменования ссылки на скаляр насколько я знаю)
      Ответить
      • в пхп вообще нету типов *ужс*, тип как все знают - контекстом определяется;

        а ссылочная переменная может быть такой:

        $ptr_var = &$var;
        - в данном случае $ptr_var и $var будут ссылаться на один и тот же участок памяти)
        Ответить
        • кстати, подумываю, что сия конструкция не так уж необходима... особенно что наконец разрабы додумались параметры передавать и возвращать по ссылке, а не по значению... если только в особых специальных случаях...
          примерно, как обходятся без указателей

          а вот разыменование позволяет сохранить динамичность без средств отражения
          Ответить
        • ф школу

          ф пыхе есть типы ))
          Ответить
      • Это в перле так
        Ответить
    • Ночью говнокод на РНР добавил, расписал какой я умный. Пришло даже 2 ответа(на почту уведомления) но утром обнаружил кто код бесследно удален. Написал обузу с матами страйкеру. Увы, но для меня этот сайт уплывет в унынии. Я потратил Драгоценных 20 минут чтобы сделать нормальный пост а он тупо исчез без предупреждения. Так что придется нам попрощаться навсегда, ведь время - деньги!
      Ответить
    • $ ожидает строку с именем пельменной. Соберём испытательный стенд:
      <?php
      
      class Pituh {
          public $kurochka = 'Ko-ko-ko';
          public function kurarek() {
              echo strval($this);
          }
      }
      
      $koko = new Pituh();
      
      $koko->kurarek();

      Функция strval пытается получить строку из $this. Что мы видим?

      https://ideone.com/fPj6rp

      PHP Recoverable fatal error: Object of class Pituh could not be converted to string
      или
      Catchable fatal error: Object of class Pituh could not be converted to string

      Тупо выбрасывает ошибку. То же сообщение об ошибке будет, если мы заменим strval($this) на $$this.

      А теперь к классу добавим метод __toString:
      <?php
      
      class Pituh {
          public $kurochka = 'Ko-ko-ko';
          public function kurarek() {
              echo strval($this);
          }
          public function __toString() {
              return 'kudah';
          }
      }
      
      $koko = new Pituh();
      
      $koko->kurarek();


      https://ideone.com/WmNr4D

      Что же вернёт strval($this)? Вернёт оно то, что возвращает метод __toString. А выражение $$this теперь вернёт значение переменной $kudah:
      <?php
       
      class Pituh {
      	public $kurochka = 'Ko-ko-ko';
          public function kurarek() {
          	global $kudah;
              echo $$this;
          }
          public function __toString() {
              return 'kudah';
          }
      }
       
      $koko = new Pituh();
       
      $kudah = 'Сам дурак';
       
      $koko->kurarek();


      https://ideone.com/HkNFhC

      Да, пельменную придётся объявлять внутри метода или рыгать внутрь с помощью global, иначе выпадет нотис об отсутствующей пельменной.
      Ответить

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