我需要根据http或https做一些事情。例如:
$https = strpos($_SERVER['REQUEST_URI'], 'https') !== false;
if ($https) { ?>
<script type="text/javascript">
var a = 'a';
</script>
<?php } else { ?>
<script type="text/javascript">
var b = 'b';
</script>
<?php } ?>
但这不起作用。无论我访问的页面是http还是https,它总是转到第二个选项。有什么工作吗?提前谢谢。
答案 0 :(得分:1)
请尝试使用if (isset($_SERVER['HTTPS']))
。
答案 1 :(得分:1)
$_SERVER['REQUEST_URI']
仅返回相对于服务器根目录的路径,而不是域或协议。此外,如果我访问http://example.com/https-is-cool
,您的代码将失败。
相反,请尝试:
$https = !empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== "off";
答案 2 :(得分:1)
if(!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443){
echo 'https';
}else{
echo 'http';
}
或作为变量:
$https = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? true : false;
答案 3 :(得分:1)
我同意@ MichaelBertwoski的评论,如果你只是想为javascript做这个,请在这样的javascript中进行检测。
if (window.location.protocol == 'https:') {
var a = 'a';
} else {
var b = 'b';
}
如果您需要PHP中的信息,您可以使用已发布的其他答案之一。