【发布时间】:2013-03-13 09:50:45
【问题描述】:
我已经使用 PHP mysql_insert_id 标头,位置方法成功实现了从一个页面到另一个页面的数据传输尝试。我所做的是:
我已经验证了它(将表单传输(即表单操作)到同一页面),我已经将它保存在数据库中,现在我正在尝试在另一个页面上显示数据。
page1(原始表单所在的位置)
$id = mysql_insert_id();
header('Location: page2.php?id='.$id);
在第2页
$id = $_GET['id'];
$query = "SELECT * FROM form1 WHERE id=$id";
{
// there after display of data
}
我遇到的问题:
我在标题栏中得到了这个链接
http://localhost/aaa/page2.php?id=76
现在,如果我尝试更改 id= 56 或 45 或任何其他值,它会将显示的数据更改为该 id..因此任何用户都可以在地址栏中更改它,因此将能够看到我的 db 值..
我首先想到的是对其进行编码,然后我想到将其改为会话。
所以我在谷歌上搜索了很多以将其设置为会话,我尝试了这个
<?php
// Starting the session
session_start();
if(isset($_SESSION['id'])) //and is this use of id correct?
{ // then what?
}
感谢大家的帮助
【问题讨论】:
-
会话也可以修改,但仍然不安全。但问题是:您为什么不想让您的用户通过更改 ID 来访问其他内容?是否只对部分用户保密?
-
您正在寻找适当的身份验证和权限系统,而不是以各种方式隐藏ID。如果不允许用户查看某些内容,请拒绝请求。
-
@Steve 此数据与表单相关.. 我保存到 db 的表单的值将在稍后阶段支付,因此如果用户更改 id,则值将更改用户可以少付多得,我用paypal交叉核对也很乏味
-
使用
GET从表单传递变量在这种情况下没有意义...无论如何,也可以使用POST修改表单输入...如果您在谈论金钱,那么你应该看看一些安全程序。
标签: php session session-variables