Stack オーバーフローURLのようなサイトのビルドURLがあります。私のURLは以下の通りです。このURLでスタックオーバーフローのURLはどのように機能しますか?
http://www.example.com/1255544/this-is-the-url-text
、1255544
は、IDとthis-is-the-url-text
は、URLのタイトルテキスト、データベースに格納された両方です。 Stack オーバーフローURLがidの基底で動作することに気づいた。ここでの仮定スタックオーバーフロー のURLは15679171
はポストのIDであり、このURLで
http://stackoverflow.com/questions/15679171/new-way-to-prevent-xss-attacks
です。
http://stackoverflow.com/questions/15706581/simplecursoradapter-does-not-load-
external-sqlite-database-id-error
そして、私は
以下のようなURLのタイトルテキストの一部の一部を削除しようとした:私はnew-way-to-prevent-xss-attacks
に触れることなく
15706581
にこのIDを変更してEnterを押すときに、URLは自動的に次の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
}
です:
私は、次の考えていますか?解決策はありますか?
を、ページの読み込みが、idでデータベースからURLを取得するとき、それは同じではない場合は、アドレスバーからURLとそれを比較します右のURLにリダイレクトします。 –
また、SQLインジェクションに注意してください($ url_idをint型にキャストするとそのトリックを行う必要があります)。 –
こんにちは。あなたは最近、 "Stackoverflow Questions Answers System Worksの仕組み"という質問を投稿しました。それはモデレータによって誤って別のサイトに移行されました。おっと、彼らのために叩かれます: ')。私はあなたがそれを再投稿することをお勧めします(コピー&ペーストを使用してください)、それを "StackOverflowのようなシステムを最適化する方法"と呼んでください。コメントには一般的な発言があるかもしれませんが、あまりにも話題にはなりすぎるかもしれません。あなたが再ポストしたら、ここで私にpingしてください(@halfer)。私はコメントします。 – halfer