确定项目中当前URL是http还是https

时间:2011-02-16 07:26:16

标签: php zend-framework ssl https

我在Zend框架中有一个网站。在这里,我想确定当前的URL是包含HTTPS还是HTTP?我使用了以下代码

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

但结果不正确。有没有其他方法来识别这个? 我还有一个问题。 如何使用php获取完整的当前URL(包括HTTP / HTTPS)?

请帮帮我

提前致谢

5 个答案:

答案 0 :(得分:13)

您可以使用已在Zend Framework中定义的方法,而不是显式使用$_SERVER超全局变量。

确定连接是HTTP还是HTTPS(此代码应该进入您的控制器):

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

获取完整的当前网址:

$this->getRequest()->getScheme() . '://' . $this->getRequest()->getHttpHost() . $this->getRequest()->getRequestUri();

答案 1 :(得分:10)

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

注意on应该是一个字符串。

答案 2 :(得分:4)

更好的检查方法是

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 :(得分:3)

你需要修复检查它应该是

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)
}

答案 4 :(得分:0)

这将检查您是否使用https或http并输出当前网址。

$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'];
}