0

我有一个自动递增的消息表,我只想能够捕获自动递增的 ID 号并将其与随机生成的代码一起存储。然后,我将使用此代码吐出整个页面。例如,假设用户刚刚更新了一条新消息,并且自动递增消息 ID 是 429。我希望能够存储该 429 并在末尾添加一个 5 位代码,以便消息自动获取 429 ID,而且在其列中有一个标识符,其代码类似于 429mUwIz。

然后,我将拥有一个公共页面,该页面将获取该代码并显示特定消息。因此,如果您要访问 www.example.com/429mUwIz,它会显示您输入的消息。我显然需要 5 个随机生成器,因此用户不能直接访问 www.example.com/1、www.example.com/2 并滥用系统。

那么提出这样一个代码的最佳方法是什么,我知道 mysql_insert_id 不起作用,因为我需要与插入一起存储的 ID。

附件是 Path 如何创建这样一个系统的一个例子。如果有帮助,他们的信件也区分大小写。

https://path.com/p/2BTxys

谢谢。

编辑:创建这个随机 5 键代码的最佳方法是什么。对不起。

4

2 回答 2

2

你可以查询它

$r = mysql_query("SHOW TABLE STATUS LIKE 'table_name' ");
$row = mysql_fetch_array($r);
$Auto_increment = $row['Auto_increment'];

这将检索下一个自动增量 id ... SHOW TABLE STATUS 的文档here

并生成一个 5 个字符的随机字符串使用

$rand = substr(md5(microtime()),rand(0,26),5);

使用microtime()andmd5产生一个哈希,然后随机抓取 5 个字符.....它不需要是唯一的,因为您正在使用它的自动增量 id ...

于 2012-05-15T15:11:25.023 回答
0

您可以避免这种情况,我的意思是,您不必将 AUTO_INCREMENT id 存储在随机代码中。将随机代码单独存储在自己的列中,然后在用户询问页面时检查它。如果 ID 和随机码不匹配,则不显示该页面。

目前,我可以假设您正在使用以下方法查询路径:

SELECT * FROM Paths WHERE key = '429mUwIz'

但这完全等同于:

SELECT * FROM Paths WHERE id = '429' AND key = 'mUwIz'

您只需从 URL 中拆分 ID 和 KEY。您可以通过将所有数字视为 ID 部分,将所有字母视为 KEY 部分来做到这一点。

于 2012-05-15T15:12:17.063 回答