我有一个使用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>
这很有效,但网址很难看。有没有办法可以隐藏这个,并在下一页仍然可以获得获取变量
答案 0 :(得分:3)
让网址看起来不错是一回事 隐藏网址数据是另一回事。永远不要隐瞒什或者您将使您的网站无法使用。
答案 1 :(得分:2)
您希望将变量发布到服务器,而不是将它们作为GET请求发送。
在PHP中,您可以使用$ _POST变量访问POST-ed变量。
简单形式:
form.php的
<form action="process.php" method="POST">
username: <input type="text" name="username" value="" /><br/>
</form>
然后可以通过
在process.php文件中访问'用户名'POST-edprocess.php
echo $_POST['username'];
与GET请求不同,发送到服务器的值不会显示在URL中。
答案 2 :(得分:0)
使用$_POST
代替$_GET
,或将其保存在会话中并转到下一页。
编辑: 那就是你真的想要完全隐藏变量。正如其他人所暗示的那样:最好使用mod_rewrite使其看起来更好,而不会隐藏数据。
答案 3 :(得分:0)
为了解决这个问题,我在寻找解决方案的帖子上了...... - 即使这是一个迟到的答案,也许它会帮助某人:
对于我的使用,我得到了一个简单的解决方案:
在启动php会话之后,只需添加到index.php文件中:
if(isset($_GET))
{
header("Location:index.php");
$_SESSION['relink'] = $_GET;
}
您将在SESSION [&#39; relink&#39;]变量中获得任何GET值。然后重定向到index.php文件。浏览器地址中会有任何可见的痕迹。在你使用它之前检查数组的任何值。但至少你的浏览器地址是CLEAN!