2012-03-24 85 views
2

我试图用这个代码:包含HTTPS使用SSL来确保一切是安全的,但是当PHP的HTTPS请求一个页面

if($_SERVER['HTTP_PORT'] !== 443 && !isset($_SERVER['HTTPS'])) { 
    header('Location: https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']); 
    exit; 
} 

,使我的登录页面和注册页面我运行页面的错误消息显示了使用$ _ 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(); }

回答

2

manual

$_SERVER['HTTPS']
 设定为非空值如果脚本是通过HTTPS协议查询。

因此,你应该使用以下条件检查的HTTPS连接:

if(!empty($_SERVER['HTTPS'])) 
{ 
    // https://... 
} 
+0

谢谢,我试过了,但没有奏效。然而,我用另一种方式类似。这里是代码:'if($ _ SERVER [“HTTPS”]!=“on”) {“Location:https://”。$ _SERVER [“HTTP_HOST”]。$ _SERVER [“REQUEST_URI” ]); exit(); }' – 2012-03-24 14:56:07

1

你最好使用$_SERVER['SERVER_PORT']。 HTTP_PORT并不总是返回端口号。