我试图使用以下代码:
if($_SERVER['HTTP_PORT'] !== 443 && !isset($_SERVER['HTTPS'])) {
header('Location: https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']);
exit;
}
使我的登录页面和注册页面包含https以使用ssl来确保一切安全,但当我运行页面时,会显示一条错误消息使用$_SERVER['https']的未定义索引错误
所以我决定使用另一个:
if ( isset( $_SERVER["HTTPS"] ) && strtolower( $_SERVER["HTTPS"] ) == "on" ) {
$pageURL .= "s";
}
但没有奏效。https没有出现,http只在那里。。。
任何关于如何使用php实现这一点的想法。。。
感谢
解决方案是:
if($_SERVER["HTTPS"] != "on")
{
header("Location: https://" . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"]);
exit();
}
来自手册:
$_SERVER['HTTPS']
如果通过HTTPS协议查询脚本,则设置为非空值。
因此,您应该使用以下条件来检查HTTPS连接:
if(!empty($_SERVER['HTTPS']))
{
// https://...
}
您最好使用$_SERVER['SERVER_PORT']
。HTTP_PORT并不总是返回端口号。