每次加载页面都请求唯一的id


requesting unique id every page load

我正在创建一个页面,该页面需要为每次页面加载选择一个唯一ID。这基本上是一个采购订单系统,但PO只是UID,所以重要的是,没有用户可以获得相同的ID。我试着只调用最后一个ID,然后添加1并提交,但如果两个或多个用户同时输入,这可能会产生冲突。为每次页面加载提取UID的最佳方法是什么?有什么解决方案吗?

感谢

Lloyd

UniqId()是一种方法,但会产生大量结果。正如V Patel所说,还有"自动增量",这可能是你想要的选项。

  1. 在MySQL中,设置一个带有字段"po_id"的表(比如"PurchaseOrders"),并将其设置为主键和自动增量。添加另一个字段"po_status"(TinyInt*1)和另一个"po_lastused"(Date*1)。状态为0=草稿,1=最终,2=已发货等。LastUsed是用户最后一次访问详细信息。

  2. 当您想要创建一个新的采购订单时,插入到采购订单(po_status,po_lastused)VALUES(0,NOW());注意:您没有指定实际的采购订单

  3. 您可以通过询问"最后插入id"来获得po_id(http://php.net/manual/en/mysqli.insert-id.php,http://php.net/manual/en/function.mysql-insert-id.php,http://www.php.net/manual/en/pdo.lastinsertid.php,取决于您的编码库)

  4. 将po_id存储在会话变量中,这样当用户返回时,您就知道他们的po_id(*2)

  5. 每次用户访问采购订单时,如果"上次更新"时间超过5分钟,则更新计时器。

  6. 定期删除所有草稿的采购订单,并且上次更新的订单比您的会话早(例如一天后)

这样,你最终会得到很好的采购订单号,很容易被引用。

*1对于纯粹主义者,您也可以使用Enum表示状态,使用int表示日期,这取决于您的偏好。您还可以将日期设置为自动更新。但我保持简单。)

*2同样,对于纯粹主义者来说,你可以在这里实现更多的安全性,以确保"其他"用户无法访问他人的采购订单,但这已经足够开始了。

您可以使用uniqid函数来获取唯一密钥。如果需要一个整数,请通过hexdec运行它。

PHP有一个:

http://php.net/manual/en/function.uniqid.php

在使用中使用数据库的自动递增功能,特别是如果你喜欢它是一个数字,并且在你想持久化它之前不需要它。