<script src="xxx.php"></script>
应热情粉丝的殷切期待,我决定从百忙之中抽出时间来完成这篇博文。(开玩笑啦)
我也是近期才接触到这种引用js的办法。例如,有这样一段js代码
<script src='http://ww.***.com/m.php?u=http://m.mumayi.com&d=http://down.***.com/a/101&i=http://m.***.com' language='JavaScript' charset='utf8'></script>
下面是这段js引用的m.php的内容:
header('Content-Type:text/html;charset=utf-8'); $url = injectCheck(strip_tags(($_GET['u'])));//JS需要跳到的页面,例如:http://m.mumayi.com $download = injectCheck(strip_tags(($_GET['d'])));//推广版电子市场下载地址,例如:http://down.mumayi.com/a/101 $iurl = injectCheck(strip_tags(($_GET['i'])));//JS需要跳到的页面,例如:http://m.mumayi.com if($url){ //$url = "window.open('".$url."')"; $url = 'window.location.href="'.$url.'"'; }else{ $url = 'window.location.href="http://m.mumayi.com/?yidongtuiguang"'; } if($iurl){ $iurl = 'window.location.href="'.$iurl.'"'; }else{ $iurl = 'window.location.href="http://m.mumayi.com/?yidongtuiguang_ios"'; } echo 'if((/AppleWebKit.*mobile/i.test(window.navigator.userAgent.toLowerCase())) || (/android/i.test(navigator.userAgent.toLowerCase())) || (/MIDP|SymbianOS|NOKIA|SAMSUNG|LG|NEC|TCL|Alcatel|BIRD|DBTEL|Dopod|PHILIPS|HAIER|LENOVO|MOT-|Nokia|SonyEricsson|SIE-|Amoi|ZTE/.test(window.navigator.userAgent.toLowerCase()))){ if(window.location.href.indexOf("?mobile")<0){ //iphone手机与ipad if(/iphone/i.test(navigator.userAgent.toLowerCase())){'; echo $iurl; echo '}else if(/ipad/i.test(navigator.userAgent.toLowerCase())){'; echo $iurl; echo '}else if(/android/i.test(navigator.userAgent.toLowerCase())){'; //如果提供了下载地址,则会直接下载 if($download){ echo 'var download="'.$download.'"; alert("系统检测到你还没有安装木蚂蚁安卓市场,点击确定下载木蚂蚁安卓市场,十万款免费破解版应用和游戏高速下载,并且还可以获取金蛋,赚话费兑换礼品哦~ ");window.open(self.download,\'_top\');'; } echo $url; echo '}else {'; echo $url; echo '}'; echo '}'; echo '}'; function injectCheck($data,$ignore_magic_quotes=false) { if(is_string($data)) { $data=trim(htmlspecialchars($data));//防止被挂马,跨站攻击 if(($ignore_magic_quotes==true)||(!get_magic_quotes_gpc())) { $data = addslashes($data);//防止sql注入 } return $data; } else if(is_array($data))//如果是数组采用递归过滤 { foreach($data as $key=>$value) { $data[$key]= injectCheck($value); } return $data; } else { return $data; } }
认真看的朋友可能已经发现,虽然<script>标签中引用的地址指向m.php,但是这个php文件的输出,实际上是一段js代码,所以能起到引用js代码的作用。
但是为什么不直接使用JS,而要用PHP来输出呢?这个例子里是为了方便获取参数。
至于获取参数,如果传递的url参数本身还带参数的话,可以将参数urlencode,然后再传递就像这样:
<script src='http://ww.mumayi.com/w.php?u=http://m.mumayi.com?seo&i=http%3A%2F%2Fm.hao123.com%2F%3Funion%3D1%26from%3D1013239a%26tn%3Dops1013239a%26qq-pf-to%3Dpcqq.discussion' language='JavaScript' charset='utf8'></script>
这样参数i后面的一大段带参数的url就可以被作为一个整体啦。
其实JS自身也可以获取参数,可能稍微麻烦一点。总之,这种JS可以跟服务器有更好的交互。在实际工作中也是用得上的。
坚持!