PHP获取网站URL协议
我写了一个小函数来建立当前的网站url协议,但我没有SSL,不知道如何测试它是否在https下工作。 你能告诉我这是否正确吗?
function siteURL()
{
$protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";
$domainName = $_SERVER['HTTP_HOST'].'/';
return $protocol.$domainName;
}
define( 'SITE_URL', siteURL() );
是否有必要像上面这样做,或者我可以像这样做吗?:
function siteURL()
{
$protocol = 'http://';
$domainName = $_SERVER['HTTP_HOST'].'/'
return $protocol.$domainName;
}
define( 'SITE_URL', siteURL() );
在SSL下,即使锚标签url使用http,服务器是否会自动将url转换为https? 是否有必要检查协议?
谢谢!
它不是自动的。 您的顶级功能看起来不错。
我知道已经很晚了,尽管解决这类问题有更方便的方法! 上面显示的解决方案是相当混乱的,如果有人应该再次检查这一点,我会怎么做:
$protocol = stripos($_SERVER['SERVER_PROTOCOL'],'https') === true ? 'https://' : 'http://';
或者甚至没有条件,如果你不喜欢
$protocol = strtolower(substr($_SERVER["SERVER_PROTOCOL"],0,strpos( $_SERVER["SERVER_PROTOCOL"],'/'))).'://';
看看$_SERVER["SERVER_PROTOCOL"]
这对我有用
if (isset($_SERVER['HTTPS']) &&
($_SERVER['HTTPS'] == 'on' || $_SERVER['HTTPS'] == 1) ||
isset($_SERVER['HTTP_X_FORWARDED_PROTO']) &&
$_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') {
$protocol = 'https://';
}
else {
$protocol = 'http://';
}
链接地址: http://www.djcxy.com/p/41129.html
上一篇: PHP Get Site URL Protocol
下一篇: HTTP Basic Authentication credentials passed in URL and encryption