За последние 24 часа нас посетили 30503 программиста и 1807 роботов. Сейчас ищут 827 программистов ...

$$key => $val

Тема в разделе "PHP для новичков", создана пользователем HeavyLady, 23 мар 2017.

  1. HeavyLady

    HeavyLady Новичок

    С нами с:
    7 дек 2016
    Сообщения:
    11
    Симпатии:
    4
    http://garbage.kek/?bird=chiken&what_bird=jareniy_chiken
    Есть код:
    PHP:
    1. foreach($_GET as $key => $val) {
    2.     $$key = $val;
    3. }
    4.  
    5. echo $bird;
    6. echo $what_bird;
    Так, СТОП, не расчехляйте инструменты пенетрации, господа, я просто спросить!
    Не так давно наткнулся на такую штуку, что в цикле создаются переменные по ключу массива вот таким образом. Мне это показалось довольно наглым на вид, мол, пошёл нахер, законом не запрешено! То есть даже не "$" . $key.
    Мне стало интересно, как к этому относятся профессиональные пехэп разработчики. Мне интересна конкретно строчка 2. На $_GET не обращайте внимания, я это просто так добавил, ЧТОБ ЗАЖЕЧЬ ОГОНЬ В ГЛАЗАХ!
    Пожалуста, спасибо.
     
  2. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Цикл отстой. Достаточно вызвать функцию
    Код (Text):
    1. extract($_GET);
    но поступать так с суперглобальными массивами - отстой, очень не безопасно.
     
  3. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Накойляд вообще это делать? GET же ну..ну как бы уже массив. Смысл его растаскивать на переменные? Нужно что-то из гета?
    1) Проверь наличие.
    2) Проверь содержимое по принципу "ожидание-реальность"
    3) Забирай значение на свои нужды.
     
  4. HeavyLady

    HeavyLady Новичок

    С нами с:
    7 дек 2016
    Сообщения:
    11
    Симпатии:
    4
    Да я ничего с этим делать не собирался, мне просто понравилося $$key. У вас не бывает такого, вот прям чтоб любвь с первого взгляда?
    Выглядит как какой-то хакцкий хак, за который взросые по ушам дадут, вот я и хотел спросить :(
    А видел я это в курсе по пхп каком-то, только вот не помню нафига оно делалось...
     
  5. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    @HeavyLady еще можно $$$key и т.д.
    PHP:
    1. $a = 'a';
    2. $$$a = 'gg';
    3. echo $a;
    такие штуки можно использовать в каких-нибудь завершенных алгоритмах, например внутри небольших функций, обрабатывающих определенный формат данных.
     
    HeavyLady нравится это.
  6. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Когда тебе придется поддерживать код с этим трешняком, ты разлюбишь это.
     
    askanim нравится это.
  7. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.599
    Симпатии:
    1.764
    Со свойствами и методами иногда удобно. У меня постоянно что-то вроде
    PHP:
    1. public actionCommand()
    2. {
    3.      $command = $_GET["command"];
    4.      if (method_exist($this, $command)) {
    5.             $this->$command();
    6.      }
    7. }
     
  8. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    @mkramer, это не то же самое))
     
  9. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    с что сука характерно - зажёг, аж очко свело
    --- Добавлено ---
    хуйня
    хуйня
    хуйня
    не совсем хуйня
    хуйня

    Слона не заметили, чуваки! Это ж просто улёт!!1 Революция! Нео и Матрыця!

    Глядите:
    PHP:
    1. $key = 1;
    2. $$key = 2;
    3. var_dump($$key);
    че скажете?

    [​IMG]

    [​IMG]
     
    #9 igordata, 24 мар 2017
    Последнее редактирование: 24 мар 2017
    HeavyLady нравится это.
  10. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Длинная тень $GLOBALS
     
  11. HeavyLady

    HeavyLady Новичок

    С нами с:
    7 дек 2016
    Сообщения:
    11
    Симпатии:
    4
    Так, падажи ёбана... Так!
     
  12. acho

    acho Активный пользователь

    С нами с:
    28 дек 2016
    Сообщения:
    854
    Симпатии:
    210
    Адрес:
    Санкт-Петербург
    int(2)
    =D
     
  13. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Скажем, что имя переменной не может начинаться с числа, и вообще удивительно, что интерпретатор на этом месте не упал с фаталкой.
     
  14. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    вот это поворот
     
  15. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    Белый пароход.
     
  16. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.599
    Симпатии:
    1.764
    PHP:
    1. <?php
    2. ${"2"} = 13;
    3. echo ${"2"};
    4.  
    5. ?>
    при этом такой код срабатывает :) И там тоже самое по сути.
     
  17. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Я бы засабмитил это на пыховый багтрекер. Тут явно что-то идет не так.
    Заповедь программиста: "Не бойся, когда не работает что-то, что должно. Бойся, когда работает то, что не должно работать."
     
    SamyRed нравится это.
  18. alexblack

    alexblack Старожил

    С нами с:
    20 янв 2016
    Сообщения:
    640
    Симпатии:
    381
    Можно тогда тоже в копилку того,что не должно работать положить:
    PHP:
    1. <?php
    2.  
    3. $a=123;
    4. $$a=456;
    5. echo $$a;
    Код (Text):
    1. 456
     
  19. acho

    acho Активный пользователь

    С нами с:
    28 дек 2016
    Сообщения:
    854
    Симпатии:
    210
    Адрес:
    Санкт-Петербург
    @alexblack, несколько сообщения вверх :)
     
  20. alexblack

    alexblack Старожил

    С нами с:
    20 янв 2016
    Сообщения:
    640
    Симпатии:
    381
    Невнимательный)Извиняюсь)