【问题标题】:PHP Header Location with parameter带参数的 PHP 标头位置
【发布时间】:2012-03-25 16:38:13
【问题描述】:

是否可以将参数附加到 PHP 标头位置?我很难让它工作。这种语法真的允许吗?

$qry = $_SERVER['QUERY_STRING'];
header('Location: http://localhost/blast/v2/?$qry ') ;

它只是不会用它的实际价值替换 $qry....为什么??

在浏览器中它最终看起来像这样:

http://localhost/blast/v2/?$qry

谢谢

【问题讨论】:

标签: php http-headers


【解决方案1】:

将单引号改为双引号:

header("Location: http://localhost/blast/v2/?$qry");

PHP 中的单引号字符串被视为字符串文字,不会针对变量进行解析。双引号字符串解析为变量,所以你会得到$qry包含的任何附加内容,而不是字面上的$qry

【讨论】:

  • 我尝试了这个header("Location:http://example.com/file.php?id=$ID");,但 header() 在$ID 的末尾添加了一个/ 并使其成为一个目录。那就是直接到http://example.com/file.php?id=5/(注意末尾的/)请给出解决方案
  • 发布一个新问题,详细解释您的问题。不要劫持帖子的 cmets
  • 很好的解释@Bojangles。对于阅读本文的人,您可能还听说过“字符串插值”一词,这就是这里发生的事情。
【解决方案2】:

您还可以通过以下标头添加多个参数:

$divert=$row['id']."&param1=".($param1)."&param2=".($param2);
header("Location:showflagsab.php?id=$divert");

将两个附加参数添加到原始 id

这些可以在目的地使用$get 方法提取

【讨论】:

  • 霍华德先生..我需要你的 ans 代码帮助..你的 ans 将发送单个记录,但如果有一些重复记录而不是如何将其存储在其他页面中。?
【解决方案3】:

我知道这是一篇很老的帖子,但请不要这样做。标头中的参数易受 XSS 攻击。您可以在此处阅读有关 XSS 的更多信息:owasp.org/index.php/Cross-site_Scripting_(XSS)

【讨论】:

    【解决方案4】:

    wiles 如何修复对标头位置的 XSS 攻击

    $param = $_REQUEST['bcd'];
    header("Location: abc.php/?id=$param");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-15
      • 1970-01-01
      • 2016-11-06
      • 2020-12-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多