PHP:跨重定向保留表单数据

时间:2013-03-21 05:26:12

标签: php forms http redirect persist

我有一个现有的网站,上面有大量关于http://domain.com的引用。我们希望在页面上强制执行https,因此我添加了一个简单的代码段:

    if($_SERVER["HTTPS"] != "on") {
        die(header("Location: https://" . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"]));
        exit(); // to ensure the script stops here, just in case
    }

这很有效,除了很多文件在动作中都有自带引用的表单。例如,在page.php上可能有:

<form action="http://domain.com/page.php" method="post">
<input type="text" name="sample" />
<input type="submit" value="Next" />
</form>

有没有办法让我从上面强制执行此重定向代码段而不会破坏所有这些表单?目标是避免手动更新100个文件中的每一个执行繁琐的查找/替换“http / https”的步骤。

1 个答案:

答案 0 :(得分:1)

不,你不能只是重定向,因为无论如何你提交不安全的内容,重定向到https将没有意义,因为请求已经可见。

您应该使用相对网址。其中/与域名相同

/ = domain.com

/page = domain.com/page

没有前导/网址相对于当前的uri(减去查询变量): 所以,从http://domain.com/page -

操作:foo = http://domain.com/page/foo

操作:/foo = http://domain.com/foo

http或https将以这种方式保留。

另一种方法是使用2斜杠操作引导域://domain.com虽然我认为较旧的IE版本无法获得它。