Определите, является ли текущий URL-адрес http или https в проекте - PullRequest
0 голосов
/ 16 февраля 2011

У меня есть сайт в Zend Framework. Здесь я хочу определить, содержит ли текущий URL-адрес HTTPS или HTTP? Я использовал следующий код

if($_SERVER['HTTPS']==on){ echo "something";}else{ echo "something other";}

Но результат неверный. Есть ли другой способ определить это? Также у меня есть еще один вопрос. Как получить полный текущий URL (включая HTTP / HTTPS), используя php?

Пожалуйста, помогите мне

Заранее спасибо

Ответы [ 5 ]

13 голосов
/ 16 февраля 2011

Вы можете использовать методы, которые уже определены в Zend Framework, вместо явного использования $_SERVER суперглобальных.

Чтобы определить, является ли соединение HTTP или HTTPS (этот код должен войти в ваш контроллер):

if ( $this->getRequest()->isSecure() ) { echo 'https'; } else { echo 'http'; }

Чтобы получить полный текущий URL:

$this->getRequest()->getScheme() . '://' . $this->getRequest()->getHttpHost() . $this->getRequest()->getRequestUri();
10 голосов
/ 16 февраля 2011
if(isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == "on") { 
    echo "something";
} else { 
    echo "something other";
}

обратите внимание, что on должна быть строкой.

4 голосов
/ 16 февраля 2011

Лучший способ проверки -

if (isset($_SERVER['HTTPS']) && $_SEREVER['HTTPS'] != 'off')
{
  //connection is secure do something
}
else
{
  //http is used
}

Как указано в руководстве

Установить непустое значение, если скрипт запрашивался по протоколу HTTPS.

Note: Note that when using ISAPI with IIS, the value will be off if the

запрос не был сделан по протоколу HTTPS.

3 голосов
/ 16 февраля 2011

вам нужно исправить, проверьте, что это должно быть

if ($_SERVER['HTTPS'] == 'on')

или попробуйте следующую функцию

if(detect_ssl()){ echo "something";}else{ echo "something other";}

function detect_ssl() {
return ($_SERVER['HTTPS'] == 'on' || $_SERVER['HTTPS'] == 1 || $_SERVER['SERVER_PORT'] == 443)
}
0 голосов
/ 16 февраля 2011

Это будет одновременно проверять, используете ли вы https или http, и выводить текущий URL.

$https = ((!empty($_SERVER['HTTPS'])) && ($_SERVER['HTTPS'] != 'off')) ? true : false;

if($https) {
    $url = "https://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
} else {
    $url = "http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...