<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可以跟服务器有更好的交互。在实际工作中也是用得上的。
<script src="xxx.php"></script>的更多相关文章
- 简单物联网:外网访问内网路由器下树莓派Flask服务器
最近做一个小东西,大概过程就是想在教室,宿舍控制实验室的一些设备. 已经在树莓上搭了一个轻量的flask服务器,在实验室的路由器下,任何设备都是可以访问的:但是有一些限制条件,比如我想在宿舍控制我种花 ...
- 利用ssh反向代理以及autossh实现从外网连接内网服务器
前言 最近遇到这样一个问题,我在实验室架设了一台服务器,给师弟或者小伙伴练习Linux用,然后平时在实验室这边直接连接是没有问题的,都是内网嘛.但是回到宿舍问题出来了,使用校园网的童鞋还是能连接上,使 ...
- 外网访问内网Docker容器
外网访问内网Docker容器 本地安装了Docker容器,只能在局域网内访问,怎样从外网也能访问本地Docker容器? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Docker容器 ...
- 外网访问内网SpringBoot
外网访问内网SpringBoot 本地安装了SpringBoot,只能在局域网内访问,怎样从外网也能访问本地SpringBoot? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装Java 1 ...
- 外网访问内网Elasticsearch WEB
外网访问内网Elasticsearch WEB 本地安装了Elasticsearch,只能在局域网内访问其WEB,怎样从外网也能访问本地Elasticsearch? 本文将介绍具体的实现步骤. 1. ...
- 怎样从外网访问内网Rails
外网访问内网Rails 本地安装了Rails,只能在局域网内访问,怎样从外网也能访问本地Rails? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Rails 默认安装的Rails端口 ...
- 怎样从外网访问内网Memcached数据库
外网访问内网Memcached数据库 本地安装了Memcached数据库,只能在局域网内访问,怎样从外网也能访问本地Memcached数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装 ...
- 怎样从外网访问内网CouchDB数据库
外网访问内网CouchDB数据库 本地安装了CouchDB数据库,只能在局域网内访问,怎样从外网也能访问本地CouchDB数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Cou ...
- 怎样从外网访问内网DB2数据库
外网访问内网DB2数据库 本地安装了DB2数据库,只能在局域网内访问,怎样从外网也能访问本地DB2数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动DB2数据库 默认安装的DB2 ...
- 怎样从外网访问内网OpenLDAP数据库
外网访问内网OpenLDAP数据库 本地安装了OpenLDAP数据库,只能在局域网内访问,怎样从外网也能访问本地OpenLDAP数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动 ...
随机推荐
- iOS开发中KVC、KVO简介
在iOS开发中,KVC和KVO是经常被用到的.可以使用KVC对对象的属性赋值和取得对象的属性值,可以使用KVO监听对象属性值的变化.简单介绍一下KVC和KVO. 一:键值编码(KVC) KVC,全称 ...
- 判断字符串中是否包含指定的内容&&字符串截取方法比较说明
1.使用indexOf()方法 方法说明: 作用:indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置(从前向后查找). 语法:stringObject.indexOf(searc ...
- 2.bootstrap-全局css
1.Bootstrap 网格系统 Bootstrap 提供了一套响应式.移动设备优先的流式网格系统,随着屏幕或视口(viewport)尺寸的增加,系统会自动分为最多12列. 1.基本的网格结构 下面是 ...
- tomcat部署在centos6.8上的乱码问题
web访问经常会莫名其妙的出现各种乱码问题.按照我自己的理解,设置一个charSet的过滤器,代码如下:import java.io.IOException; import javax.servlet ...
- 用css绘制各种图形
1.用css绘制三角形 http://www.cnblogs.com/blosaa/p/3823695.html
- PowerBI开发 第七篇:数据集和数据刷新
PowerBI报表是基于数据分析的引擎,数据真正的来源(Data Source)是数据库,文件等数据存储媒介,PowerBI支持的数据源类型多种多样.PowerBI Service(云端)有时不直接访 ...
- jQuery插件:Ajax将Json数据自动绑定到Form表单
jQuery注册方法的两种常用方式: //jQuery静态方法注册 //调用方法$.a1() $.extend({ a1: function () { console.log("a1&quo ...
- 常见SQL分页方式效率比较
结一下. 1.创建测试环境,(插入100万条数据大概耗时5分钟). ,) ) )) ),end 2.几种典型的分页sql,下面例子是每页50条,198*50=9900,取第199页数据. id id ...
- selenium 调用键盘按键
1.想要调用键盘按键操作需要引入keys包: from selenium.webdriver.common.keys import keys 通过send_keys() 调用按键 send_keys( ...
- Kindeditor JS 取值问题以及上传图片后回调等
KindEditor.ready(function (K) { var editor = K.create('#editor_id', { //上传管理 uploadJson: '/js/kinded ...