Stack Overflow URL のようなサイトの URL を作成しました。私のURLは以下の通りです。
http://www.example.com/1255544/this-is-the-url-text
この URL では、1255544
は ID でありthis-is-the-url-text
、 は URL タイトル テキストであり、どちらもデータベースに保存されています。Stack Overflow の URL が id に基づいて機能することに気付きました。ここにスタック オーバーフローの 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
}
このアクションを実行するのは適切かつ効率的な方法ですか? 解決策はありますか?