• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

在PHP中实现Javascript的escape()函数代码_php技巧

php 搞代码 3年前 (2022-01-26) 23次浏览 已收录 0个评论

这里,一般都需要预先将正常的字符串编码成 JavaScript unescape() 函数能够解译的格式,以 PHP 为例,可以使用以下函数实现 Javascript 中 escape() 函数相同的功能:

 <BR><?php <BR>function escapeToHex($string, $encoding = UTF-8) { <BR>$return = ; <BR>for ($x = 0; $x < mb_strlen($string, $encoding); $x ++) { <BR>$str = mb_substr($string, $x, 1, $encoding); <BR>if (strlen($str) > 1) { // 多字节字符 <BR>$return .= %u . strtoupper(bin2hex(mb_convert_encoding($str, UCS-2, $encoding))); <BR>} else { <BR>$return .= % . strtoupper(bin2hex($str)); <BR>} <BR>} <BR>return $return; <BR>} <BR>?> <BR>


假设我们要隐藏以下地址:http://www.dirk.sh/assets/uploa*本5文来源gaodai$ma#com搞$$代**码)网@搞代码gaodaimaded/thisistest.pdf
我们可以利用以下脚本实现:

 <BR><?php <BR>// 请自行包含 escapeToHex() 函数定义 <BR>$test = document.write(\test\); <BR>echo <script Language="Javascript">eval_r(unescape(" . escapeToHex($test) . "))</script>; <BR>?> <BR>


如果你查看页面源代码,你会看到(因为太长,所以进行了手动分行,实际运行结果应该是完整的一行):

 <BR><script Language="Javascript">eval_r(unescape("%64%6F%63%75%6D%65%6E%74%2E%77 \ <BR>%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 \ <BR>%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 \ <BR>%69%73%74%65%73%74%2E%70%64%66%22%3E%74%65%73%74%3C%2F%61%3E%27%29"))</script> <BR>


而在浏览器中显示的页面,和普通 html 没有分别。
注:
1、escapeToHex() 函数的第二个参数($encoding)表示你传递进来的字符串的编码,默认是 UTF-8,如果你使用了其他编码,应该在调用函数的明确指定;
2、unescape() 在 ECMAScript v3 规范中被反对使用,该规范建议使用新的替代函数 decodeURIComponent(),但我经过测试发现,decodeURIComponent()函数对多字节字符(中文)处理存在问题,所以仍然使用了 unescape() 函数。
3、原则上来说,上述方法只是为了防止搜索爬虫获取你认为需要保密的资源地址,在支持 Javascript 的浏览器下浏览页面,和没有启用这种保护机制情况下看到的呈现是完全相同的。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:在PHP中实现Javascript的escape()函数代码_php技巧
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址