【发布时间】:2012-02-26 11:06:27
【问题描述】:
我有一个登录表单:
<form method =POST action="/login.php">
...
</form>
我希望 login.php 页面重定向到使用 https。
我不想将用户发送到https://.../login.php,因为他们可能会更改链接。但我想在解析登录表单数据并登录用户之前在服务器端进行重定向。
我找到了例子:
if($_SERVER["HTTPS"] != "on") {
header("HTTP/1.1 301 Moved Permanently");
header("Location: "https://" . $_SERVER["SERVER_NAME"] . $_SERVER["REQUEST_URI"]);
exit();
}
但我没有$_SERVER["HTTPS"] 如果我有var_dump($_SERVER);
我确实有$_SERVER['SERVER_PORT'] 女巫是 80 岁。
有什么想法吗?
谢谢
【问题讨论】:
-
"我不想发送用户..." "我想做一个重定向" 这两者是互不兼容的。是否要强制用户使用 SSL?如果是这样,您需要将用户重定向(发送)到登录表单的 HTTPS 版本。
-
but i don't have当然,当您与普通HTTP连接时,您不会拥有它。端口 80 也一样。$_SERVER["HTTPS"] = 'on';当您通过 HTTPS 连接时,在这种情况下您的端口将是443。您的脚本正在做正确的事情,它会检查当前连接是否是 HTTP,如果不是 - 它会重定向到 HTTPS 版本。 -
我可以,但用户有可能将链接更改为 HTTP。我需要在 login.php 页面上检查 HTTPS
-
然后你需要在 login.php 脚本中使用重定向。如果用户更改链接以使用 HTTP 版本,您的脚本将简单地将他再次重定向到 HTTPS 版本。
-
是的@George Cummins,脚本是什么?
标签: php redirect https secure-coding