<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 安装并启动 ...
随机推荐
- 使用JavaScript实现ATM取款机
ATM机需求描述如下: 假设一个简单的ATM机的取款过程为: 首先提示用户输入密码(password),假设默认密码为111111,最多只能输入3次, 超过3次则提示用户"密码错误,请取 ...
- NDK调试
第一种(控制台输出): 1.配置好环境变量,这是为了方便起见.将你sdk和ndk的根目录放到环境变量path中.配置完成之后可以来个小检测: 在命令行分别输入adb和ndk-stack后点击回车,只要 ...
- Centos6.7安装chrome
cd /etc/yum.repos.dwget http://people.centos.org/hughesjr/chromium/6/chromium-el6.repo yum install c ...
- oracle 表查询(二)
1.使用逻辑操作符号问题:查询工资高于500或者是岗位为manager的雇员,同时还要满足他们的姓名首字母为大写的J?select * from emp where (sal > 500 or ...
- Linux的硬盘使用情况、挂载、SSD挂载(查看df -h不能看到的卷)
linux上的盘和window的有区别,磁盘空间必须挂载在目录上,要不然没用 对与新增的硬盘.SSD固态硬盘.挂载到linux上的操作如下: df -h #显示目前在Linux系统上的文件系 ...
- SAP Gateway简介
SAP Gateway在S4/HANA时代的ABAP开发模型中有着重要的地位.SAP Gateway是什么?它对ABAP开发有怎样的影响?可以为我们提供哪些方便?这篇译文将浅要地讨论这些话题. SAP ...
- Java的基本程序设计结构【2】
注释 与大多数程序设计语言一样,Java 中的注释也不会出现在可执行程序中.因此,可以在源程序中根据需要添加任意多的注释,而不必担心可执行代码会膨胀.在Java 中,有三种书写注释的方式. 最常用的方 ...
- uvalive 3029 City Game
https://vjudge.net/problem/UVALive-3029 题意: 给出一个只含有F和R字母的矩阵,求出全部为F的面积最大的矩阵并且输出它的面积乘以3. 思路: 求面积最大的子矩阵 ...
- java基本的要点
我想告诉大家的不是什么java基本要点,只是对初学者的一点忠告,本人是从八维学校亲身经历过的学生,要想学好并且快速了解java,那你首先必须有英语底子,没有英语底子,几个单词都不会的,我觉得还是放弃学 ...
- mysqldumpslow -- 分析慢查询日志
格式:mysqldumpslow [选项] 慢查询日志路径 选项: -s 排序方式,可选值有c(记录次数).t(查询时间).l(锁定时间).r(返回记录).a(平均) -t 显示的记录数 - ...