Посоветуйте как правильно сделать вывод ссылок в php

Тема в разделе "Как сделать...", создана пользователем SuperGadgets, 8 ноя 2018.

  1. SuperGadgets

    SuperGadgets Создатель

    Регистр.:
    26 дек 2016
    Сообщения:
    44
    Симпатии:
    4
    Привет
    На странице приходиться часто выводить ссылки методами php.
    Подскажите, с точки зрения нагрузки на сервер, быстродействия и вообше коректности как правильно?

    100 ссылок вида <?php echo $_SERVER['HTTP_HOST'] .$_SERVER['REQUEST_URI'];?> ???

    или один раз <?php $url = $_SERVER['HTTP_HOST'] .$_SERVER['REQUEST_URI']; echo $url;?>
    и потом 99 раз так <?php echo $url;?>

    Как правильно?
    Или тут без разницы?
     
    Последнее редактирование: 8 ноя 2018
  2. Wertos

    Wertos Пьянь местная

    Регистр.:
    13 апр 2007
    Сообщения:
    169
    Симпатии:
    38
    <?php $url = $_SERVER['HTTP_HOST'] .$_SERVER['REQUEST_URI']; echo $url;?>
    <?= $url; ?>
    Так ещё короче :)
     
  3. SuperGadgets

    SuperGadgets Создатель

    Регистр.:
    26 дек 2016
    Сообщения:
    44
    Симпатии:
    4
    вопрос был не про короче ))
     
  4. Black#FFFFFF

    Black#FFFFFF

    Регистр.:
    19 июл 2007
    Сообщения:
    202
    Симпатии:
    126
    чем меньше имя переменной, тем читабельнее код. с точки зрения: 100 раз обратитесь к массиву SERVER по его ключу, или 100 раз к переменной, там быстродействие изменится незначительно. все это имеет смысл с сотен тысяч и миллионов обращений. хорошим тоном программирования в последнее время принято не обращаться напрямую к суперглобальным массивам. связано с тем, что данные в них могут быть с легкостью модифицированы. при этом не только разными частями вашей программы (классами, функциями и т.п.), но и злоумышленниками. т.е. рекомендую еще и проверить данные перед использованием в таком случае. и еще: не $_SERVER['HTTP_HOST'], а $_SERVER['SERVER_NAME']. в первом может также содержаться порт. а не только имя хоста.
     
    SuperGadgets нравится это.
  5. SuperGadgets

    SuperGadgets Создатель

    Регистр.:
    26 дек 2016
    Сообщения:
    44
    Симпатии:
    4
    Нашел в нете такую конструкцию $_SERVER['HTTP_HOST'], вот и использую для вывода линков, вот захотел уточнить как правильно
     
  6. Den1xxx

    Den1xxx

    Moderator
    Регистр.:
    15 янв 2014
    Сообщения:
    271
    Симпатии:
    149
    А так ещё короче, на 3 символа;)
    PHP:
    <?=$url?>
    А по теме.
    Присвоение переменной так, как делаешь, придется делать в каждом файле.
    Либо подключать постоянно (инклюдить).
    Если у тебя действительно часто обращаются к текущему адресу, лучше его задефайнить:
    PHP:
    <?
    //Где-нибудь в стартовом файле:
    define('CUR_LINK',$_SERVER['HTTP_HOST'] .$_SERVER['REQUEST_URI']);
    //Теперь вывод текущей ссылки возможен где угодно и без кавычек:
    echo CUR_LINK;
    ?>
    Ещё по теме могу сказать, что определение типа протокола, по которому работает скрипт, довольно нетривиальная задача в PHP
    http или https — в переменной сервера неправильно зачастую отдаются данные, да и сервера могут отличаться.
    Под апачем будет одно, под нгинксом другое.
    Когда я заморочился этим, то нашел опытным путем довольно надежный вариант:
    PHP:
        function protocol() {
            if (isset(
    $_SERVER['HTTP_SCHEME'])) return $_SERVER['HTTP_SCHEME'].'://';
            if (isset(
    $_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') return 'https://';
            if (isset(
    $_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == 443) return 'https://';
            if (isset(
    $_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') return 'https://';
            return 
    'http://';
        }
    Такие дела)