Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 捕获自动增值并使用查询存储_Php_Mysql - Fatal编程技术网

Php 捕获自动增值并使用查询存储

Php 捕获自动增值并使用查询存储,php,mysql,Php,Mysql,我有一个自动递增的消息表,我只是希望能够捕获自动递增的ID号,并将其与随机生成的代码一起存储。然后,我将使用此代码吐出整个页面。例如,假设用户刚刚更新了一条新消息,并且自动递增消息ID为429。我希望能够存储该429,并在末尾添加一个5位代码,以便消息自动获取429 ID,但在其列中也有一个标识符,代码类似于429mUwIz 然后我会有一个公共页面,该页面将接受该代码并显示特定的消息。因此,如果您要访问www.example.com/429mUwIz,它会显示输入的消息。我显然需要5个随机生成器

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

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

那么,编写这样一个代码的最佳方式是什么呢?我知道mysql\u insert\u id无法工作,因为我需要与insert一起存储的id

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

谢谢

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

您可以查询

$r = mysql_query("SHOW TABLE STATUS LIKE 'table_name' ");
$row = mysql_fetch_array($r);
$Auto_increment = $row['Auto_increment'];
这将检索下一个自动增量id

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

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

使用
microtime()
md5
生成哈希,然后随机获取5个字符。。。。。它不需要是唯一的,因为您使用的是自动递增id…

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

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

SELECT * FROM Paths WHERE key = '429mUwIz'
但这完全等同于:

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

您只需从URL中拆分ID和密钥。你可以这样做:把所有数字看成ID部分,所有字母作为关键部分。RobertPitt@Pushpesh已经回答了这个问题。你读过这个问题吗?作为一种通过更改URL阻止随意浏览邮件的快速方法,你是否考虑过确保请求中的
HTTP\u REFERER
字段设置为网站上的一个页面?如果有人更改URL中的ID,则字段为空,但如果他们遵循链接,则可以。。。。它并不完美,但它会使随意浏览变得不可能。@Andrews我从未想过,谢谢你的建议。同时也感谢Paolo_NL_FR的链接,我确实在研究这个问题。我考虑过这个问题,但是我怎么能确定随机生成的代码不是重复的呢?我知道,例如,只有LETT和一个5个字符的代码将生成近1200万个组合,但这些基本上都是状态更新,我总是可以生成一个副本,不是吗?@user1011713为什么你必须确保它不是一个副本?使用
ID:429,KEY:mUwIz
ID:429,KEY:429mUwIz
记录有什么区别。没有一个您只需更改访问数据的查询(请参阅答案编辑)。我明白您的意思。谢谢你的建议。