我已经构建了我的网站的 URL,例如 Stack Overflow URL。我的网址如下。
http://www.example.com/1255544/this-is-the-url-text
在这个 URL 中,1255544
是 id 和this-is-the-url-text
是 URL 标题文本,两者都存储在数据库中。我注意到 Stack Overflow URL 是基于 id 工作的。假设这里是一个 Stack Overflow URL
http://stackoverflow.com/questions/15679171/new-way-to-prevent-xss-attacks
在此 URL 中,15679171
是帖子的 ID。当我将此 id 更改为15706581
不触摸new-way-to-prevent-xss-attacks
并按 Enter 时,URL 自动更改为以下 URL:
http://stackoverflow.com/questions/15706581/simplecursoradapter-does-not-load-
external-sqlite-database-id-error
当我尝试删除 URL 标题文本的某些部分时,如下所示
http://stackoverflow.com/questions/15679171/new-way-to-preve
它会自动更正 URL,如下所示:
http://stackoverflow.com/questions/15679171/new-way-to-prevent-xss-attacks
这意味着正在根据 id 从数据库中检索数据,并且根据 id附加15679171
了相关的 URL 标题文本。new-way-to-prevent-xss-attacks
我也想这样做。但问题是,我不明白如果有人更改 URL 的 id,标题文本应该会自动更改。我该怎么做呢?
我想到了以下几点:
$url_id = $_GET["id"];
$url_txt = $_GET["url_txt"];
$qry = "SELECT * FROM mytable WHERE url_id = '{$url_id}' LIMIT 1";
$data = mysql_query($qry);
$data_set = mysql_fetch_array($data);
if($url_txt== $data_set["url_txt"]) {
// proceed further
} else {
$rebuilt_url = "http://www.example.com/" . $url_id . "/" . $data_set["url_txt"];
header("Location: {$rebuilt_url}") // Redirect to this URL
}
执行此操作是否正确且有效?有解决办法吗?