抢我的头发来解决这个问题,但我不能。
我正在解析url中的id以根据该id在下一页上提取数据。因此,我不是解析id=123
,而是像process.php?token=TG4n6iv_aoO7sU3AngFY4WLSppLvueEoh-MnYE6k7NA
那样加密它,并在使用$_GET
收集它之前在process.php页面上解密它,然后在sql查询中使用它。这不是正确的URL,我需要像process.php?token=9878799889
这样的网址,我需要在process.php上解密这个9878799889,它会给我原来的用户ID。
所以在这里我不能使用md5或base64_encode给我带来难看的字符串。
这里最好的事情是什么?
id是唯一的,因此生成的长数字也应该是唯一的,并且不容易猜测。
现在我正在使用盐加密对数。实际上想要解析像www.sitename.com/process/token/9878799889
..这可以通过.htaccess来实现,所以不用担心它..
任何帮助将不胜感激..
答案 0 :(得分:0)
您可以做的是在数据库中添加一个关联表,其中包含一个UUID作为主键(一个随机生成的数字)和您的真实ID引用
(以及您可能想要存储的其他信息,喜欢"有效直到"日期或其他事情......)
在解析UUID时,您必须在该表中生成条目
让我们说INSERT INTO uuid_table (uuid, real_id) VALUES (9878799889, 123);
现在当你处理网址process.php?token=9878799889
时
你只需要SELECT real_id FROM uuid_table WHERE uuid=9878799889;
它将重新读取读取标识123
您完成后还应DELETE FROM uuid_table WHERE uuid=9878799889
。
请注意,它也适用于md5或base_64,但实际上它会使url更加丑陋。