从PHP中的一系列数字创建一系列字符

时间:2011-01-24 21:52:31

标签: php

我有一个包含许多项目的数据库,目前我的用户使用一个使用GET参数的简单php脚本从数据库中检索信息,例如www.mypage.com/post.php?id=123432

一开始它一切都很好,但我知道我的Ids非常大(10000000)。所以在这一点上,我不是我的用户有那些多长的网址,所以我认为改变数字的安全性来进行思考,就像post.php?id = XFBJ然后php脚本知道那是例如,id = 11223256437。有关如何做到这一点的任何想法?谢谢!

1 个答案:

答案 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) - 这是一个合理的上限(当然更高可用)。编写这样的函数非常简单。

相关问题