-1

抢我的头发来解决这个问题,但我不能。

我正在解析 url 中的 id 以根据该 id 在下一页上提取数据。因此,我没有进行解析,而是id=123对其进行了加密process.php?token=TG4n6iv_aoO7sU3AngFY4WLSppLvueEoh-MnYE6k7NA,并在 process.php 页面上通过收集它来解密它$_GET,然后在 sql 查询中使用它。这不是正确的 URL,我需要类似 url process.php?token=9878799889,我需要在 process.php 上解密这个 9878799889,这会给我我的原始用户 ID。

所以在这里我不能使用 md5 或 base64_encode 给我丑陋的字符串。在这里做什么最好?id 是唯一的,因此生成的长数字也应该是唯一的并且不容易猜到。现在我正在使用带盐的加密对数。实际上想像这样解析www.sitename.com/process/token/9878799889..这可以用.htaccess来实现,所以不用担心..

任何帮助都感激不尽..

4

1 回答 1

0

您可以做的是在您的数据库中添加一个关联表,该表将包含一个 UUID 作为主键(一个随机生成的数字)和您的真实 ID 参考
(以及您可能想要存储在那里的其他信息,例如“有效期至”日期或其他事情...)

您必须在解析 UUID 时在该表中生成条目
让我们INSERT INTO uuid_table (uuid, real_id) VALUES (9878799889, 123);
现在说,当您处理 url 时,process.php?token=9878799889
您只需要SELECT real_id FROM uuid_table WHERE uuid=9878799889;
它会重新读取读取的 id123

完成后你也应该DELETE FROM uuid_table WHERE uuid=9878799889这样做。

请注意,它也适用于 md5 或 base_64,但确实使 url 更丑陋。

于 2013-07-05T13:29:00.667 回答