【发布时间】:2020-09-02 05:21:34
【问题描述】:
我得到一些用户请求带有编码 URL 的页面,这些 URL 只是无法通过 $_GET[tag] 解码。
我心目中最糟糕的罪犯是 %5Cu003d,但还有其他人。在这个例子中 page.php?tag%5Cu003d44 应该是 page.php?tag=44 因为 %5C 是 / 所以 /u003D 是 unicode 003D 或 "="
我不知道哪个网站对这个 URL 进行了编码,但我试图在不手动解码的情况下为人们提供他们想要的东西。是否有一些开关或方法可以使 $_GET 工作?应该不会吧?
我尝试在关于 SO 的另一次讨论中发送此标头,但没有帮助。 header ('Content-type: text/html; charset=utf-8');
编辑**********************************
以下是更多错误 URL 示例:
page.php?lat=25.79&%3Blon=-80.16
page.php?lat=41.46u0026lon%3D-82.71
page.php?lat%5Cu003d30.31%5Cu0026lon%5Cu003d-89.33
page.php?lat=28.94-89.4&lon
【问题讨论】:
-
我认为我们需要查看您的错位查询字符串的集合,以便更好地了解您正在处理的内容。正在使用什么框架?是否有任何重定向发生?只有一个示例字符串,这是我能提供的最好的3v4l.org/8umOP,但我不愿意发布答案,因为您的数据可能有太多的变化方式。
-
@mickmackusa 谢谢你的回复。我正在寻找一个解决方案,其中 $_GET 或等效项可以通过运行一些标头或打开一些开关或使用不同的功能来进行解码。也就是说,我将用更多示例编辑我的帖子。
-
是的,必须对您的网址进行手术不是一个稳定/专业的解决方案。你不应该做任何这种猴子生意。请更清楚、更一致地了解您收到的网址。您发布的第一个以
page.php开头,第二个以我希望在?(查询字符串的开头)之后看到的内容开头。再次...任何框架或重定向在起作用?这些网址的潜在来源是什么?如果它们来自您的应用程序,那么您需要能够将它们追溯到 js 或 html 源。 -
我希望我知道 URL 的来源是什么。是的,这些例子在 ?在网址中。对困惑感到抱歉。我试图搜索它们没有成功。 getenv("HTTP_REFERER") 没有返回任何内容,它们肯定不是来自应有的位置,这是我网站的另一个页面。 (它们是php图像)忽略它们并非没有道理,但我想知道是否有一个简单的解决方案。