我在Zend框架中有一个网站。在这里,我想确定当前的URL是包含HTTPS还是HTTP?我使用了以下代码
if($_SERVER['HTTPS']==on){ echo "something";}else{ echo "something other";}
但结果不正确。有没有其他方法来识别这个? 我还有一个问题。 如何使用php获取完整的当前URL(包括HTTP / HTTPS)?
请帮帮我
提前致谢
答案 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'];
}