我只创建了两个页面。第一页有几个按钮。如果用户单击一个按钮,则按钮的ID将发送到另一个页面,并显示在Div。
中示例 第1页:
<script type="text/javascript">
$(document).ready(function(){
$(".btn").click(function()
{
var val = $(this).attr("id");
$(".divX").text(ausles);
window.location = 'page2.php?valX=' + val;
});});
</script>
使page2.php
<div class="ed"> <?php
echo $_GET["valX"];
?></div>
我的问题:
用户现在可以更改URL中的值(x77):localhost / pt1 / page2.php?valX = x77 `
我怎么能阻止这个?
答案 0 :(得分:3)
您需要决定用户是否可以更改valX的价值。
话虽如此,有几种方法可以解决这个问题。
<强> $ _ POST 强>
您可以将valX的值作为表单提交而不是重定向发布,这样做的缺点是,如果用户刷新或重新加载页面,他们可能会丢失帖子数据。
<强> $ _ COOKIE 强>
您可以设置cookie,这可以在JS中完成并在PHP中检索,有关如何在Javascript Look Here中设置cookie的示例,Cookie仍然可以被操纵但不太可能。
<强> $ _ SESSION 强>
这可能是最安全的方式,但要求你在PHP中设置会话,这需要你在你的情况下使用AJAX,当点击按钮时,AJAX到一个在会话中存储值的php文件,然后在第二页上检索它。
答案 1 :(得分:0)
您无法阻止对网址的更改。你有两个选择 -
一个。更改为使用POST而不是GET(URL中没有任何内容)
湾查询字符串中需要多个项目,其中所有项目必须有效才能查看页面。
答案 2 :(得分:0)
尝试将您的值发布到其他页面上。下面的代码将在运行时创建一个表单,并将自动提交给给定的URL
$(".btn").click(function(){
var val = $(this).attr("id");
$(".divX").text(ausles);
var form = document.createElement('form');
form.method = 'post';
form.action = 'page2.php';
form.innerHTML = '<input type="hidden" id="valX" name="valX" value="' + val + '">';
document.body.appendChild(form);
form.submit();
});
然后进入page2.php
<div class="ed"> <?php echo $_POST["valX"];?></div>
答案 3 :(得分:0)
使用像这样的按钮定义一个数组
$buttonValues = array(array(1, 'Text for number 1'), ...);
现在您可以轻松地循环输出。 在page2.php中,您可以检查提交的ID是否在数组中,如果没有中止。 这是一种白名单方法,因此不受任何客户端欺骗的影响。
通过POST或COOKIE发送它只是意味着它不能用手绕过它。如果有人花时间模仿所有请求POST,可以更改COOKIES。