PHP 在多个域中隐藏查询参数

PHP hide query parameter in multiple domains

提问人:lProfesseur 提问时间:10/27/2023 最后编辑:lProfesseur 更新时间:10/27/2023 访问量:36

问:

我希望这个PHP代码可以在5个领域上运行:

$directory = isset($_GET["directory"]) ? $_GET["directory"] : "";

echo $directory;

示例 1 :

当 进入 时,它被转换为domain.com/?directory=homehome-directory.com

示例 2 :

当 进入 时,它被转换为domain.com/?directory=contact&page=listscontact-space.com/?page=lists

示例 3 :

当 进入 时,它被转换为domain.com/?directory=app&page=overview&section=basic&userid=5appdomain.com/?page=overview&section=basic&userid=5

从第二个域访问时:

  • “directory”查询参数应隐藏在链接中。
  • 该变量应在没有问题的情况下进行设置。$directory
php .htaccess

评论

0赞 Dario Eberhard 10/27/2023
如果可以,则应通过方法发送参数。然后使用 .还是需要在url中输入参数?directoryPOST$_POST["directory"]directory
1赞 CBroe 10/27/2023
“我无法访问 $_GET[”directory“] 中的查询'directory'值。”- 您现在在谈论这些 URL 格式中的哪一种?当然,使用 ,您将无法访问名为 - 的 GET 参数,因为该 URL 中根本不存在该参数。但是你把原来的目录值放到你的新URL的主机名中,这样你就可以通过在脚本中访问来获取它。appdomain.com/?page=overview&section=basic&userid=5directory$_SERVER['HTTP_HOST']
1赞 Dario Eberhard 10/27/2023
要清楚。您尝试重定向到不同的域。在删除参数时,您不能这样做,并使用rewrite_url在新域上访问此参数。即使是 php 会话也是特定于域的。如果它们都托管在同一台服务器上,Env 将起作用。另一种替代方法是使用 cookie 将值存储在客户端,然后从新域中读取它。否则,请解释您尝试做什么,以便获得更好的解决方案。
1赞 CBroe 10/27/2023
@DarioEberhard除此之外,对于不接受 cookie 的客户来说,这样的事情可能也应该正常工作,我看不出它们在这种情况下会如何工作。我们在这里处理的不是可以共享 cookie 的子域,它是完全不同的域,从 到 .因此,“然后从新域读取它”在这里是行不通的 - 除非此时您想要发出额外的跨域请求,也是从客户端发出的。即使这样,如果浏览器/扩展程序阻止了第三方 cookie,也可能会失败。domain.comhome-directory.com
1赞 CBroe 10/27/2023
我能看到它工作的唯一方法是,如果我们从第一个重定向到,然后从那里设置一个cookie,然后再次重定向,以从查询字符串中删除该参数。(然后至少它不会是第三方 cookie,因此它被阻止的可能性较小。domain.com/?directory=homehome-directory.com/?directory=homehome-directory.comdirectory=home

答: 暂无答案