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

    +165

    1. 1
    2. 2
    3. 3
    4. 4
    if (($pos = strpos($_SERVER["REQUEST_URI"], "?")) !== false)
    {
    	$params = substr($_SERVER["REQUEST_URI"], $pos+1);
    	parse_str($params, $_GET);

    Bitrix, 404.php

    Посоны не слышали про $_SERVER[QUERY_STRING], зато, сука, неймспейсы знают!

    Запостил: Boolean, 26 Января 2014

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

    • Уже несколько недель мучаюсь с ним. Просто тихий ужас.
      Ответить
    • ребята еще и не слишком доверяют $_GET, конструируя заново... молодцы!
      Ответить
    • Ребят, я не битриксовод, я хотел спросить, в чем прикол про namespace?
      Ответить
      • В том, что используются всякие заумные конструкции типа:
        namespace Bitrix\Main;
        
        use Bitrix\Main\Context;
        use Bitrix\Main\Localization\LanguageTable;
        Но при этом игнорируются более простые.
        Ответить
        • Что ж в неймспейсах заумного?

          А что касается QUERY_STRING vs REQUEST_URI - а вдруг там с ней какие-то подводные камни связаны? :) Например какой-нибудь сервер не выставляет эту переменную, или при каких-то условиях она кривая.
          Ответить
          • Предлагаю пойти дальше: поднимать сервер прямо из PHP с помощью socket_listen и парсить строку запроса и все заголовки самостоятельно.

            Мало ли что там лежит в этих глобальных переменных! Нельзя подвергать себя зависимости от кривых серверов!
            Ответить
            • пых и так умеет сервер. http://www.php.net/manual/ru/features.commandline.webserver.php
              Ответить
              • Знаю, 5.4 умеет, но это не то. Ощущения не те, всё равно придётся переменную $_SERVER использовать.
                Ответить
                • О извиняюсь я в первом сообщении сарказм не разглядел.
                  Ответить
        • Ааа, понял, спасибо =)
          Ответить

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