我有一个包含许多项目的数据库,目前我的用户使用一个使用GET参数的简单php脚本从数据库中检索信息,例如www.mypage.com/post.php?id=123432
一开始它一切都很好,但我知道我的Ids非常大(10000000)。所以在这一点上,我不是我的用户有那些多长的网址,所以我认为改变数字的安全性来进行思考,就像post.php?id = XFBJ然后php脚本知道那是例如,id = 11223256437。有关如何做到这一点的任何想法?谢谢!
答案 0 :(得分:4)
我想你可以做很简单的伎俩来达到目的。将URL从URL视为基于36的数字,并在从数据库检索之前将其转换为基于10的数字。
$_GET['id'] = '5yc1s';
$id = base_convert($_GET['id'], 36, 10); // 10000000
// SELECT ... FROM ... WHERE id = :id [id = $id]
当你想要显示链接时,请执行相反的操作:
$id = 10000000;
$urlId = base_convert($id, 10, 36); // 5yc1s
// ...?id=$urlId
编辑:哦,base_convert()
的上限为36(a-z0-9
),而不是32 - 这会使您的链接更短。当然你可以编写自己的函数,可以转换多达62个数字(a-zA-Z0-9
) - 这是一个合理的上限(当然更高可用)。编写这样的函数非常简单。