【问题标题】:Hiding the get variables隐藏获取变量
【发布时间】:2011-04-08 05:35:44
【问题描述】:

我有一个使用 get 变量构造的 url,例如

location.href = this.href +'?type='+ escape($('#type_of_station').html()) + '&count='+ escape($('.number_changer').attr("id").slice(-1));

这给了我一个如下的网址

http://posnation.com/pre_config/pre_config_step_2.php?type=Grocery&count=2 

在下一页我通过 PHP 获取变量

<p id="type_of_station" class="text left"><?php $_GET['type'] != "" ? print str_replace("_", " ", $_GET['type']) : print "Food Pos System" ?></p>

这很好用,但网址有点难看。有没有办法隐藏这个并且在下一页上仍然可以使用 get 变量

【问题讨论】:

  • @Col 在页面之间传输变量,由随机密钥标识?为什么不呢?
  • @Pekka 不会让书签 URL 成为不可能吗?
  • @aularon:这似乎是配置过程中的第 2 步,脚本名称为 pre_config_step_2.php。我认为在这里防止书签实际上是可取的。但我只是在夸夸其谈。
  • @aularon 当然,但 POST 也是如此
  • 您应该避免使用escape(),这会导致混合使用百分比编码的 ISO-8859-1 和 Unicode 转义序列与% 而不是\ 。改用encodeURIComponent(),它提供干净的百分比编码的UTF-8,易于解码。

标签: php jquery .htaccess mod-rewrite


【解决方案1】:

让网址看起来不错是一回事。
隐藏 url 数据是另一回事。永远不要隐藏任何东西。否则您将使您的网站无法使用。

【讨论】:

  • 这取决于上下文,但通常是正确的。
  • 很抱歉,但在提供的示例中,我看不到使用 POST 而不是 GET 如何使站点无法使用。它确实阻止了 URL 的书签,但这些 URL 似乎是配置过程中的步骤。像戴尔这样的主要站点使用 POST 来配置他们的系统。如果需要添加书签,处理复杂数据的更好方法是“为这个添加书签”/永久链接解决方案。
【解决方案2】:

您希望将变量发布到服务器而不是作为 GET 请求发送。

在 PHP 中,您可以使用 $_POST 变量访问 POST 后的变量。

简单形式:

form.php

<form action="process.php" method="POST">
   username: <input type="text" name="username" value="" /><br/>
</form>

'username' POST-ed 然后可以在 process.php 文件中被访问

进程.php

echo $_POST['username'];

与 GET 请求不同,发送到服务器的值不会显示在 URL 中。

【讨论】:

  • 永远不要在 GET 应该在的地方使用 POST,儿子。这些方法不可互换。
  • @Col。弹片:你怎么知道这里应该使用GET?
  • 没有人说它们可以互换。但这是解决问题的一种方法。
  • 如果你使用post你不能直接使用URL访问页面。
  • @Stian:是的,但并非所有内容都与访问 URL 或 SEO 有关。有些东西不需要再次访问或永久链接。
【解决方案3】:

要么使用$_POST 而不是$_GET,要么将它们保存在会话中并转到下一页。

编辑: 也就是说,如果您真的想要完全隐藏变量。正如其他人所建议的那样:最好使用 mod_rewrite 让它看起来更好,而不隐藏数据。

【讨论】:

    【解决方案4】:

    我在你的帖子上为这个问题寻找解决方案.. - 即使这是一个迟到的答案,也许它会对某人有所帮助:

    对于我的使用,我有一个简单的解决方案:

    在启动 php 会话后,只需在 index.php 文件中添加以下行:

    if(isset($_GET))
    {
    header("Location:index.php");
    $_SESSION['relink'] = $_GET;
    }
    

    您将在 SESSION['relink'] 变量中拥有任何 GET 值。然后你重定向到 index.php 文件。您的浏览器地址中将有任何可见的痕迹。在您使用它之前检查数组的任何值之后。但至少你的浏览器地址是干净的!

    【讨论】:

      猜你喜欢
      • 2013-01-03
      • 2013-09-27
      • 1970-01-01
      • 2012-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多