在PHP重定向期间保留URL参数

jdb*_*org 9 html php

这不起作用:

<?php
header('Location: www.mysite.com/index.php?foo=bar&var=abc');
?>
Run Code Online (Sandbox Code Playgroud)

我最终得到了www.mysite.com/index.php?foo=bar我认为HTML可能会试图将&var解释为一个字符.传递初始变量(在?之后),但后面的所有变量都不是(在&之后).

con*_*ius 5

if( isset($_SERVER['HTTPS'] ) ) {
  header('Location: https://'.$_SERVER['SERVER_NAME'].'/index.php?'.$_SERVER['QUERY_STRING']);
}
else{
  header('Location: http://'.$_SERVER['SERVER_NAME'].'/index.php?'.$_SERVER['QUERY_STRING']);
} 
Run Code Online (Sandbox Code Playgroud)

使用htmlspecialchars防止 html 注入

  • 我知道我看起来很挑剔,但现在我看到的每个标题中 90% 都是错误的,这真的开始让我烦恼。Location 标头现在是正确的,但是您的 htmlspecialchars 建议仍然完全不正确。URL 没有 HTML 的概念。只有 HTML 才有 HTML 的概念(听起来很傻)。URL 中的 &amp; 应该是 &amp;,而不是 &amp;。HTML 在 HTML 上下文中转义 URL 是正确的。在标头上下文中执行此操作是错误的。 (4认同)
  • htmlspecialchars 对标头没有任何意义... HTML 转义仅在 HTML 领域才有意义。此外,正如我之前提到的,前面没有 http://(或 https://)是不正确的。根据 HTTP 标准,省略是不正确的。 (3认同)