gpt4 book ai didi

php - Stack Overflow URL 是如何工作的?

转载 作者:可可西里 更新时间:2023-11-01 12:34:59 24 4
gpt4 key购买 nike

我有自己网站的构建 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 15679171 和相关的 URL 标题文本从数据库中检索数据,new-way-to-prevent-xss-attacks, 根据id附上。

我也想做这个。但问题是,我不会理解如果有人更改 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
}

执行此操作是否正确且有效?有解决办法吗?

最佳答案

您的代码看起来很不错,在我的一个 Stack Overflow 答案中我也建议了类似的方法。但是,我只建议一个小的改进。而不是:

header("Location: {$rebuilt_url}");

你应该这样做:

header ('HTTP/1.1 301 Moved Permanently');
header("Location: {$rebuilt_url}");

这将使浏览器主动缓存这些 URL,并且您的代码和 SQL 查询不会每次都执行。

同时检查:

  1. .htaccess if URL is bad do something
  2. .htaccess rewrite friendly URLs

关于php - Stack Overflow URL 是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15847109/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com