0

我有一个 php 页面,其中我捕获了与上一页不同的值,还有一个打印按钮,它打印所有这些字段,包括唯一编号。当用户点击打印按钮时,记录将被插入数据库并在屏幕上显示打印窗口。但问题是 html 页面上存在唯一编号,例如如果两个人同时登录,则将获得相同的唯一编号,并且两者都可以打印具有相同唯一编号的同一页面。

我如何控制这个问题,我也尝试将用户重定向到上一页,但它不起作用。

这是我的 php 页面,我使用 ajax 调用

<?php
$conn = mysql_connect('localhost','','') or die ("");
mysql_select_db("") or die ("Database Problem");
$query = "select * from print where a = $a;
$result = mysql_query($query);
if(mysql_num_rows($result) == 0)
{
    $query = "INSERT INTO print () VALUES () 
    $result = mysql_query($query) or die();
    if(mysql_affected_rows()<>1)
    {
        header ("Location:mainpage.php?uniquenumber=xy");
    }
}
4

3 回答 3

0

客户端需要这个唯一编号是什么?我的意思是,如果它是一个重要的价值,那么让用户可以访问和编辑它是有点危险的。

如果你只需要这个数字来区分打印表中的不同条目,为什么不直接使用和 auto_increment 索引呢?

另一种解决方案是会话变量。当用户成功登录时,会根据多个变量(用户名、时间、浏览器)生成此唯一 ID,这将确保此 ID 不会有重复值。然后像这样存储变量:

session_start();
$_SESSION['ID']=$unique_ID;

然后,您可以在任何其他 PHP 脚本中读取它,如下所示:

session_start();
$unique_ID=$_SESSION['ID'];
于 2013-07-25T10:47:19.577 回答
0

您可以在插入数据库之前验证唯一编号(也可以在打印之前)。如果存在唯一编号,则抛出错误消息“唯一编号已被使用”并提供另一个唯一编号(通过再次加载 HTML 页面或执行其他操作)。

于 2013-07-25T10:55:44.187 回答
0

你可以使用 unisid http://php.net/manual/en/function.uniqid.php 来生成一个唯一的id

于 2013-07-25T10:41:53.863 回答