2013-03-13 52 views
3

我已经成功实现了使用PHP mysql_insert_id头,位置方法从一个页面到另一个页面的数据传输尝试。我所做的是:将脚本从PHP转换为mysql_insert_id头,定位方法为PHP会话方法

我已验证它(将表单转移(即表单操作)到同一页面),我已将它保存在数据库中,现在我试图在其他页面上显示数据。

第1页(其中原来的形式位于)

$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 
} 

我所面临的问题:

我m到处在标题栏此链接

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? 
} 

感谢您的帮助

+0

会话还可以被修改,仍然不安全。但问题是:为什么不想让用户通过更改ID来访问其他内容?仅对某些用户专用吗? – Alvaro 2013-03-13 09:53:54

+1

您正在寻找一个正确的**身份验证**和**权限**系统,而不是以各种方式隐藏身份证。如果用户不被允许查看内容,*拒绝*请求。 – deceze 2013-03-13 09:56:05

+0

@Steve这个数据与一个表单相关..表单的值我保存到数据库,它将在稍后阶段支付,所以如果用户更改了ID,所以这些值将会改变,用户可能会支付更少,并获得更重要的是,对于我来说,使用paypal进行交叉检查将会很乏味 – aks 2013-03-13 09:57:29

回答

2

你必须解释一下你究竟想要做的家伙?这样我们可以给出建议。虽然下面的代码将工作正常。但我认为不使用它。在使用会话之前使用session_start。

第1页:

$id = mysql_insert_id(); 
$_SESSION['last_id'] = $id; 
header('Location: page2.php'); 

第2页: $ ID = $ _SESSION [ 'last_id'];

$query = "SELECT * FROM form1 WHERE id=$id"; 
    { 
// there after display of data 
    } 
0

page1.php中:

<form action="post" action="page2.php"> 
     <input name="name" type="hidden" value="<?=mysql_insert_id();?>"></input> 
</form> 

使page2.php:

<?php 
    $id = $_POST['name']; 
    $query = "SELECT * FROM form1 WHERE id=$id"; 
?>