美好的一天,
所以我有一个形式为/insert_video.php?video_tut_id=15
的链接15 是从 mysql 查询生成的动态数字
有没有办法在 url 栏中用 php 隐藏这个数字,这意味着不是上面的/insert_video.php?video_tut_id=adjkh13123 形式的东西,但是这个过程是可逆的,所以不像 md5 这只是一种方式
最佳答案
有多种方法可以解决这个问题。一些站点使用“slug”的概念,这通常涉及使视频的标题 对 URL 有效。而不是像这样的 url:
insert_video.php?video_tut_id=15
...你最终得到这样的 url:
insert_video.php?video_tut=how-to-make-cookies
像这样:
function slug($str) {
$str = strtolower(trim($str));
$str = preg_replace('/[^a-z0-9-]/', '-', $str);
$str = preg_replace('/-+/', "-", $str);
return $str;
}
另一种方法是给每个视频一个非数字的“别名”。这与 slug 方法非常相似,但您可以使用关键字或随机字母和数字代替标题。
您提到的方法是从 id 中提取一些可逆的哈希值,可以通过多种方式轻松实现,具体取决于您希望它解密的难度。如果您需要高安全性,可以选择使用 mCrypt
库 ( docs )。如果安全不是一个高度关注的问题,您可以使用任何晦涩的方法 - 如果用户尝试过,可能会弄清楚,但如果他们不会从工作中得到比这更令人兴奋的东西您在数据库表中使用的 ID,可能不会有很多有能力的人打扰。
像后者这样的简单方法就像使用 chr
( docs ) 将数字转换为字母一样简单。您可以使用“凯撒密码”并移动所有数字并在 url 中传递 key (同样,这是一种低安全性的方法)。 Google 周围并选择众多自制加密方法中的一种 - 所有这些都是不安全的,但足以进行一些简单的混淆。
综上所述,在不了解您的用例的情况下,费尽心思向用户隐藏 ID 通常不是很重要。无论您是否向用户隐藏这些 ID 号码,您都希望您的各种脚本实现安全性 - 获取 ID 号码不应该给潜在的攻击者任何重要的东西。如果用户获取这些 ID 是危险的,我建议您重新考虑您的安全模型并确定为什么拥有 ID 号会给某人“王国的 key ”——它不应该,根本不,*尤其是 如果 ID 号包含您将向公众公开的 URL 的一部分。如果 id 字段非常重要,需要费尽心思才能隐藏起来,那么永远不要公开它(无论是否加密)会更好。
关于php - 如何使用某些 php 函数隐藏或编码 url?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8481107/