8

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
}

このアクションを実行するのは適切かつ効率的な方法ですか? 解決策はありますか?

4

2 に答える 2

5

あなたのコードはかなり良さそうで、スタック オーバーフローの回答の 1 つで、同様のアプローチも提案していました。ただし、1 つだけマイナーな改善を提案します。それ以外の:

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

やったほうがいい:

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

これにより、ブラウザはこれらの URL を積極的にキャッシュできるようになり、コーディングや SQL クエリが毎回実行されることはなくなります。

また、チェックしてください:

  1. .htaccess URL が悪い場合はどうにかしてください
  2. .htaccess リライトしやすい URL
于 2013-04-06T05:02:40.507 に答える
3

Apacheを使っているならURL 書き換えについて知っておくべきだと思います

URL 書き換えでは、URL をよりわかりやすい外観に書き換えます。下のURLを見てください

http://www.downloadsite.com?category=34769845698752354

URL書き換えたらこうなった

http://www.downloadsite.com/Nettools/Messengers

URL 書き換えは Apache 構成 (書き換えルール) で設定する必要があるため、リクエストが PHP によって解釈される前に URL が書き換えられるため、取得したい正確なリソースを取得できます。

 RewriteRule ^/category$ /content.php  
  RewriteRule ^/category/([0-9]+)$ /.php?id=$1  
  RewriteRule  
    ^/category/([0-9]+),([ad]*),([0-9]{0,3}),([0-9]*),([0-9]*$)  
    cat.php?id=$1&sort=$2&order=$3&start=$4

ここですべてを説明することはできませんが、以下に、URL の書き換えについて学習できるリンクをいくつか示します。

これは、わかりやすい URL を作成するための最高のハックです。

資力:

于 2013-04-06T04:53:33.287 に答える