【问题标题】:ignore '&' in var contents passed in address bar忽略地址栏中传递的 var 内容中的“&”
【发布时间】:2011-06-08 16:41:54
【问题描述】:

我有一个下载和打开文件的download.php 文件。我有一个问题是文件在文件名中使用“&”命名,所以当我尝试访问其中包含“&”的文件时找不到文件。

示例:download.phpf=one_&_another.pdf

在 download.php 文件中,我使用获取文件名 ($_GET['f']) 如果我将文件名更改为 one_and_another.pdf,上面的示例将抛出错误文件未找到。

是的,如果没有大量这样命名的文件,重命名会很好。

我需要知道如何忽略 '&' 并不意味着我要在 php 中传递另一个 var。

【问题讨论】:

  • @user535617:不起作用,这不是 HTML 编码问题,而是 URL 编码问题。

标签: php


【解决方案1】:

如果您可以控制查询字符串,则需要对 & 符号进行 URL 编码,使其如下所示:

download.php?f=one_%26_another.pdf

然后像往常一样寻找$_GET['f']。否则文字和符号& 会将$_GET 分解为

{ 'f' => 'one_', '_another.pdf' => '' }

【讨论】:

    【解决方案2】:

    你可能只需要在你的链接中正确地urlencode()&

    download.php?f=one_%26_another.pdf
    

    【讨论】:

      【解决方案3】:

      接受用户输入的规则 1:不要相信它。

      Refer to this StackOverflow answer 为您提供解决方案。

      【讨论】:

      • 好的建议和链接,但他不信任有问题的文件名。他只是有一个编码问题。尽管如此,根据更好的方案重命名它们是一个值得考虑的选择
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-16
      • 2011-02-23
      • 2015-06-01
      • 2014-12-20
      相关资源
      最近更新 更多