我有一个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");
}
}
答案 0 :(得分:0)
你可以使用unisid http://php.net/manual/en/function.uniqid.php 生成唯一ID
答案 1 :(得分:0)
客户端需要什么样的单一序列?我的意思是让用户可以访问和编辑它是有点危险的,如果它是一个重要的价值。
如果您只需要这个数字来区分打印表中的不同条目,为什么不使用此表的auto_increment索引?
另一种解决方案是会话变量。当用户成功登录时,会根据多个变量(用户名,时间,浏览器)生成此唯一ID,这将确保此ID不会重复出现。然后像这样存储变量:
session_start();
$_SESSION['ID']=$unique_ID;
然后,您可以在任何其他PHP脚本中读取它:
session_start();
$unique_ID=$_SESSION['ID'];
答案 2 :(得分:0)
您可以在插入数据库之前验证唯一编号(在打印之前)。如果存在唯一的no,则抛出错误消息&#34;唯一的no已被使用&#34;并给出另一个唯一的数字(通过再次加载HTML页面或做其他事情)。