У меня есть сайт в рамках Zend. Здесь я хочу определить, содержит ли текущий URL HTTPS или HTTP? Я использовал следующий код
if($_SERVER['HTTPS']==on){ echo "something";}else{ echo "something other";}
Но результат неверен. Есть ли другой способ определить это? Также у меня есть еще один вопрос. Как получить полный текущий url (включая HTTP / HTTPS) с помощью php?
пожалуйста, помогите мне
заранее спасибо
if(isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == "on") { echo "something"; } else { echo "something other"; }
обратите внимание, что on
должно быть строкой.
Вы можете использовать методы, которые уже определены в Zend Framework, вместо явного использования $_SERVER
переменных $_SERVER
.
Чтобы определить, является ли соединение HTTP или HTTPS (этот код должен войти в ваш контроллер):
if ( $this->getRequest()->isSecure() ) { echo 'https'; } else { echo 'http'; }
Чтобы получить полный текущий URL:
$this->getRequest()->getScheme() . '://' . $this->getRequest()->getHttpHost() . $this->getRequest()->getRequestUri();
Лучший способ проверить
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.
вам нужно исправить проверку, это должно быть
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) }
Это будет проверять, используете ли вы 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']; }