Tôi đã tạo URL của trang web của mình như Stack URL tràn. Các URL của tôi như sau.URL ngăn xếp ngăn xếp hoạt động như thế nào?
http://www.example.com/1255544/this-is-the-url-text
Trong URL này, 1255544
là id và this-is-the-url-text
là nội dung tiêu đề URL, cả hai được lưu trữ trong cơ sở dữ liệu. Tôi đã nhận thấy rằng Stack URL tràn hoạt động trên cơ sở id. Giả sử đây là một Stack Overflow URL
http://stackoverflow.com/questions/15679171/new-way-to-prevent-xss-attacks
Trong URL này, 15679171
là id của bài. Khi tôi thay đổi id này để 15706581
mà không cần chạm vào new-way-to-prevent-xss-attacks
và nhấn Enter, URL tự động thay đổi vào URL sau:
http://stackoverflow.com/questions/15706581/simplecursoradapter-does-not-load-
external-sqlite-database-id-error
Và khi tôi đã cố gắng để loại bỏ một số phần của văn bản tiêu đề URL như dưới đây
http://stackoverflow.com/questions/15679171/new-way-to-preve
Nó tự động sửa chữa các URL như sau:
http://stackoverflow.com/questions/15679171/new-way-to-prevent-xss-attacks
Nó có nghĩa là dữ liệu đang được lấy ra từ cơ sở dữ liệu trên cơ sở id 15679171
và văn bản tiêu đề URL có liên quan, new-way-to-prevent-xss-attacks
, được đính kèm theo id.
Tôi cũng muốn làm điều này. Nhưng vấn đề là, tôi sẽ không hiểu rằng nếu ai đó thay đổi id của URL, văn bản tiêu đề sẽ tự động thay đổi. Làm thế nào để tôi làm điều này?
Tôi đã nghĩ như sau:
$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
}
Đó có phải là cách thích hợp và hiệu quả để thực hiện hành động này hay không? Có giải pháp nào không?
khi tải trang, lấy url từ cơ sở dữ liệu của bạn bằng cách id, so sánh nó với url từ thanh địa chỉ, nếu nó không giống nhau , sau đó chuyển hướng đến url phải. –
Ngoài ra, hãy cẩn thận khi chèn sql (đúc $ url_id vào một int nên làm thủ thuật). –
Xin chào! Gần đây, bạn đã đăng câu hỏi có tên "Cách hoạt động của Hệ thống trả lời câu hỏi Stackoverflow" và nó được di chuyển đến một trang web khác do lỗi của một người kiểm duyệt. Rất tiếc, cho họ biết ':)'. Tôi đề nghị bạn repost nó (sử dụng sao chép và dán!) Nhưng gọi nó là "Làm thế nào để tối ưu hóa hệ thống giống như StackOverflow của tôi". Hãy nhớ rằng nó có thể được đóng cửa như quá discursive tuy nhiên, mặc dù bạn có thể nhận được một số nhận xét chung trong các ý kiến. Nếu bạn đăng lại, hãy ping tôi ở đây (@halfer) và tôi sẽ bình luận. – halfer