我已經構建了我的網站的網址,例如堆棧 溢出網址。我的網址如下。堆棧溢出URL如何工作?
http://www.example.com/1255544/this-is-the-url-text
在這個URL,1255544
是id和this-is-the-url-text
是URL標題文本,無論是存儲在數據庫中。我注意到,堆棧 溢出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鍵,網址自動更改爲以下網址:
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
。
我也想這樣做。但問題是,我不明白如果有人更改URL的標識,標題文本應該自動更改。我該怎麼做呢?
我已經想好了以下內容:
$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
}
是否執行此操作或不正確的和有效的方式?有解決方案嗎?
當頁面加載,從您的數據庫通過id來獲取URL,它的URL從地址欄比較,如果它是不一樣的,然後重定向到正確的URL。 – 2013-04-06 04:54:48
另外,小心sql注入(鑄造$ url_id到一個int應該做的伎倆)。 – 2013-04-06 05:04:44
你好。您最近發佈了一個名爲「如何Stackoverflow問題解答系統工作」的問題,並由主持人將其遷移到錯誤的其他站點。哎呀,爲他們拍了':)'。我建議你重新發布它(使用複製和粘貼!),但稱它爲「如何優化我的類似StackOverflow的系統」。請記住,儘管您可能會在評論中發表一些一般性評論,但它可能會因爲太過鬆散而被封閉。如果你轉發,請在這裏(@halfer)給我打電話,我會發表評論。 – halfer 2013-04-07 19:11:13