0

誰かが URL の末尾に 16 進値を追加した場合に、特定のページを表示できるようにしたいと考えています。

たとえば、colors.com を持っているとします。誰かが colors.com/FF0000 にアクセスしたい場合、ページにその 16 進数が表示されます。16進値のみにしたいのですが、URLから取得して表示することは可能ですか。

特定の文字や特殊文字を削除して、誰かがテキストだけを使用できないようにします。

それが理にかなっていることを願っています。

4

3 に答える 3

4

Web サーバーの URL 書き換えを使用して、16 進数の色 (6 文字の A ~ F と数字の 0 ~ 9) のようなパターンに一致させ、それに応じてルーティングする必要があります。

example.com/AA00FFサイレントリライトするApache mod_rewrite の例example.com/index.php?color=AA00FF:

RewriteEngine On
# [A-Fa-f0-9]{6} matches six letters A-F and digits 0-9.
RewriteRule ^([A-Fa-f0-9]{6})$ index.php?color=$1 [L]

PHP スクリプトindex.phpで、から取得します$_GET['color']。その正規表現についても PHP で検証する必要があります。そうしないと、XSS 攻撃の危険があります。

// You MUST validate it in PHP as well, to avoid XSS attacks when you insert it into HTML
if (preg_match('/^[A-Z0-9]{6}$/i', $_GET['color'])) {
  // ok to use
}
else {
  // Invalid hex color value. Don't use it!
}

これが良い考えだと言っているわけではありませんが、ボディの色を設定するには、次のようにします。

// Last warning: DON'T DO THIS UNLESS YOU HAVE VALIDATED WITH THE REGEX ABOVE!
echo "<body style='background-color: #{$_GET['color']}'>";
于 2012-09-04T13:07:25.777 に答える
1

サーバーが URL をスクリプトにマッピングしていると仮定すると、 から取得できます$_SERVER['REQUEST_URI']

簡単な正規表現を使用して、16 進数の RGB カラーであることを確認できます。

于 2012-09-04T13:06:15.860 に答える