ここで、通常は、JavaScript unescape() 関数で解釈できる形式に通常の文字列を事前にエンコードする必要があります。PHP を例に挙げると、次の関数を使用して、escape() と同じ機能を実現できます。 Javascript の関数:
コードをコピー コードは次のとおりです:
functionscapeToHex($string, $encoding = UTF-8) {
$return = ;
for ($x) = 0; $x $str($string, $x, 1, $encoding); 1) { // マルチバイト文字
$return . = %u . strtoupper(bin2hex(mb_convert_encoding($str, UCS-2, $encoding)));
$return .= % . ($str));
}
}
return $ return;
?>
次のアドレスを非表示にするとします。
これを実現するには、次のスクリプトを使用できます:
コードをコピー
コードは次のとおりです: // ご自身でescapeToHex()関数定義を含めてください
$test = document。 write(
test);
echo ?>
ページのソースコードを見ると、(長すぎるため行を手動で分割しています) 、実際の実行結果は完全な行になるはずです):
コードをコピーします
コードは次のとおりです: < ;script Language="Javascript">eval_r(unescape("%64%6F% 63%75%6D%65%6E%74%2E%77 %72%69%74%65%28%27%3C% 61%20%68%72%65%66%3D%22%68%74 %74%70%3A%2F%2F%77%77%77
%2E%64%69%72%6B%79%65 %2E%6E%65%74%2F%75%70%6C%6F% 61%64%65%64%2F%74%68%69%73
%69%73%74%65%73%74% 2E%70%64%66%22%3E%74%65%73%74 %3C%2F%61%3E%27%29"))
そしてブラウザに表示されるページは、通常の HTML と変わりません。
注:
1.escapeToHex() 関数の 2 番目のパラメーター ($encoding) は、渡す文字列のエンコーディングを示します。他のエンコーディングを使用する場合は、関数を呼び出すときにそれを明確に指定する必要があります。関数;
2. ECMAScript v3 仕様では、unescape() の使用が反対されています。仕様では、新しい代替関数 decodeURIComponent() の使用が推奨されています。しかし、テストの結果、decodeURIComponent() 関数にはマルチバイトの問題があることがわかりました。文字(中国語)処理のため、unescape() 関数が引き続き使用されます。
3. 原則として、上記の方法は、秘密にしておく必要があると思われるリソース アドレスを検索クローラーが取得するのを防ぐためのものです。JavaScript をサポートするブラウザでページを閲覧すると、この保護メカニズムが適用されている場合とまったく同じ表示が表示されます。有効になっていません。 。
http://www.bkjia.com/PHPjc/322351.html
www.bkjia.com
truehttp://www.bkjia.com/PHPjc/322351.html技術記事ここで、通常、通常の文字列を JavaScript unescape() 関数で解釈できる形式に事前にエンコードする必要があります。PHP を例に挙げると、次の関数を使用して JavaScript で escap を実装できます。