【问题标题】:converting an script from PHP mysql_insert_id header, location method to PHP session method将脚本从 PHP mysql_insert_id 标头、位置方法转换为 PHP 会话方法
【发布时间】: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


【解决方案1】:

你必须解释你到底想做什么?以便我们提出建议。虽然下面的代码可以正常工作。但我认为没有用。在使用会话之前使用 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
  } 

【讨论】:

    【解决方案2】:

    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";
    ?>
    

    【讨论】:

      猜你喜欢
      • 2018-03-07
      • 1970-01-01
      • 1970-01-01
      • 2015-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多