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

SuperGadgets

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

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

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

Как правильно?
Или тут без разницы?
 
Последнее редактирование:
вопрос был не про короче ))
 
чем меньше имя переменной, тем читабельнее код. с точки зрения: 100 раз обратитесь к массиву SERVER по его ключу, или 100 раз к переменной, там быстродействие изменится незначительно. все это имеет смысл с сотен тысяч и миллионов обращений. хорошим тоном программирования в последнее время принято не обращаться напрямую к суперглобальным массивам. связано с тем, что данные в них могут быть с легкостью модифицированы. при этом не только разными частями вашей программы (классами, функциями и т.п.), но и злоумышленниками. т.е. рекомендую еще и проверить данные перед использованием в таком случае. и еще: не $_SERVER['HTTP_HOST'], а $_SERVER['SERVER_NAME']. в первом может также содержаться порт. а не только имя хоста.
 
Нашел в нете такую конструкцию $_SERVER['HTTP_HOST'], вот и использую для вывода линков, вот захотел уточнить как правильно
 
<?= $url; ?>
Так ещё короче

А так ещё короче, на 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://';
    }
Такие дела)
 
у меня шапка инклудится во все страницы, там я определяю адресс, и дальше использую только <?=$url?>

протокол не вывожу, браузер сам определит протокол
 
Последнее редактирование модератором:
Назад
Сверху