我有一个自动递增的消息表,我只想捕获自动增量ID号并将其与随机生成的代码一起存储。然后我会使用此代码吐出整个页面。例如,假设用户刚刚更新了新消息,并且自动增量消息ID为429.我希望能够存储429并在末尾添加5位数代码,以便消息获得429 ID自动但在其列中也有一个标识符,代码为429mUwIz。
然后我会有一个公共页面,它会接受该代码并显示特定的消息。因此,如果您要访问www.example.com/429mUwIz,它会显示输入的消息。我显然需要5个随机发生器,因此用户无法直接访问www.example.com/1,www.example.com/2并滥用该系统。
那么提出这样一个代码的最佳方法是什么,我知道mysql_insert_id不会工作,因为我需要使用insert存储的ID。
附件是Path如何创建这样一个系统的一个例子。如果有帮助,他们的信件也会区分大小写。
感谢。
编辑:这也是创建这个随机5键代码的最佳方法。遗憾。
答案 0 :(得分:2)
您可以查询它
$r = mysql_query("SHOW TABLE STATUS LIKE 'table_name' ");
$row = mysql_fetch_array($r);
$Auto_increment = $row['Auto_increment'];
这将检索下一个自动增量ID ... docs for SHOW TABLE STATUS here
使用
生成5个字符的随机字符串$rand = substr(md5(microtime()),rand(0,26),5);
使用microtime()
和md5
生成一个哈希,然后抓取一个随机的5个字符.....它不需要是唯一的,因为你正在使用自动增量ID。 ..
答案 1 :(得分: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部分。