为避免需要进行大量“加密”和“解密”,您可以为每个页面使用唯一的密钥对。将另一个字段 (VARCHAR 5) 添加到名为 key 的 pages 表中,然后为每个页面随机生成一个 key。
要生成密钥,您可以加密一个随机数
function random_key(){
$crypt = crypt(rand(0,9999999), 'Whatever you want to say here.');
return substr($crypt, 0, 5);
}
这将导致像?page=55-so3ph
( ?page={$id}-{$key}
)这样的 URL
然后使用它你可以做类似的事情
<?php
if(empty($_GET['page']))
die('missing ?page');
$page = explode('-', $_GET['page']);
if(count($page) != 2)
die('invalid ?page');
list($page_id, $page_key) = $page;
if(!is_numeric($page_id))
die('invalid page id');
$Post = your_query_method('SELECT * FROM pages WHERE id = ' . $page_id . ' AND key = "' . your_escape_function($page_key) . '"');
if(!$Post){
header('Location: /invalid_page.html');
exit;
}
//At this point we know that they ID key pair is correct