webirus
@webirus
Тыжверстальщик! Наверстай мне упущенное...

Определение протокола через $_SERVER?

Собственно, вопрос вот в чем.

Есть echo print_r($_SERVER), который отдает мне:

Array
(
    [REQUEST_SCHEME] => http
    [SERVER_NAME] => site.loc
)

А мне нужно получить строку вида: http://site.loc, я пытаюсь вывести через:

<?php echo $_SERVER["REQUEST_SCHEME"]; ?>://<?php echo $_SERVER["SERVER_NAME"]; ?>

Но на выходе только ://site.loc.

Как решить вопрос?
  • Вопрос задан
  • 4178 просмотров
Решения вопроса 2
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
$protocol = (!empty($_SERVER['HTTPS']) && 'off' !== strtolower($_SERVER['HTTPS'])?"https://":"http://");
echo $protocol. $_SERVER["SERVER_NAME"];
Ответ написан
webirus
@webirus Автор вопроса
Тыжверстальщик! Наверстай мне упущенное...
<?php
$scheme = isset($_SERVER['HTTP_SCHEME']) ? $_SERVER['HTTP_SCHEME'] : (
     (
  (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off') ||
   443 == $_SERVER['SERVER_PORT']
     ) ? 'https://' : 'http://'
 
 );
?>

<?php echo $scheme ?><?php echo $_SERVER["SERVER_NAME"]; ?>
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Austin_Powers
@Austin_Powers
Web developer (Symfony, Go, Vue.js)
А если так:
<?php echo $_SERVER["REQUEST_SCHEME"] . '://' . $_SERVER["SERVER_NAME"];
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы