应热情粉丝的殷切期待,我决定从百忙之中抽出时间来完成这篇博文。(开玩笑啦)

我也是近期才接触到这种引用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>的更多相关文章

  1. 简单物联网:外网访问内网路由器下树莓派Flask服务器

    最近做一个小东西,大概过程就是想在教室,宿舍控制实验室的一些设备. 已经在树莓上搭了一个轻量的flask服务器,在实验室的路由器下,任何设备都是可以访问的:但是有一些限制条件,比如我想在宿舍控制我种花 ...

  2. 利用ssh反向代理以及autossh实现从外网连接内网服务器

    前言 最近遇到这样一个问题,我在实验室架设了一台服务器,给师弟或者小伙伴练习Linux用,然后平时在实验室这边直接连接是没有问题的,都是内网嘛.但是回到宿舍问题出来了,使用校园网的童鞋还是能连接上,使 ...

  3. 外网访问内网Docker容器

    外网访问内网Docker容器 本地安装了Docker容器,只能在局域网内访问,怎样从外网也能访问本地Docker容器? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Docker容器 ...

  4. 外网访问内网SpringBoot

    外网访问内网SpringBoot 本地安装了SpringBoot,只能在局域网内访问,怎样从外网也能访问本地SpringBoot? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装Java 1 ...

  5. 外网访问内网Elasticsearch WEB

    外网访问内网Elasticsearch WEB 本地安装了Elasticsearch,只能在局域网内访问其WEB,怎样从外网也能访问本地Elasticsearch? 本文将介绍具体的实现步骤. 1. ...

  6. 怎样从外网访问内网Rails

    外网访问内网Rails 本地安装了Rails,只能在局域网内访问,怎样从外网也能访问本地Rails? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Rails 默认安装的Rails端口 ...

  7. 怎样从外网访问内网Memcached数据库

    外网访问内网Memcached数据库 本地安装了Memcached数据库,只能在局域网内访问,怎样从外网也能访问本地Memcached数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装 ...

  8. 怎样从外网访问内网CouchDB数据库

    外网访问内网CouchDB数据库 本地安装了CouchDB数据库,只能在局域网内访问,怎样从外网也能访问本地CouchDB数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Cou ...

  9. 怎样从外网访问内网DB2数据库

    外网访问内网DB2数据库 本地安装了DB2数据库,只能在局域网内访问,怎样从外网也能访问本地DB2数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动DB2数据库 默认安装的DB2 ...

  10. 怎样从外网访问内网OpenLDAP数据库

    外网访问内网OpenLDAP数据库 本地安装了OpenLDAP数据库,只能在局域网内访问,怎样从外网也能访问本地OpenLDAP数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动 ...

随机推荐

  1. angular $compiler

    directive是如何被compiled HTML编译发生在三个阶段: 1.$compile遍历DOM节点匹配directives 如果compiler找到元素上的directive,directi ...

  2. JDK8-废弃永久代(PermGen)迎来元空间(Metaspace)

    1.背景 2.为什么废弃永久代(PermGen) 3.深入理解元空间(Metaspace) 4.总结 ========正文分割线===== 一.背景 1.1 永久代(PermGen)在哪里? 根据,h ...

  3. 使用phpmailer插件发邮件失败提示:SMTP -> ERROR: Failed to connect to server: Connection timed out (110) smtp connect() failed;

    一个邮件发送问题,整整弄了我一周时间,起因是这样的,之前弄的一个网站,需要在邮箱里面认证之后才可以注册成功.网站上线了差不多一年之后,客户突然跟我说,网站不能注册了,然后我就查看了一下代码. 发现报这 ...

  4. Linux入门之常用命令(4)vi编辑器

    vi分为三种模式 一般模式:删除字符.删除整行.复制粘贴等操作 编辑模式:i o a r进入 输入字符  Esc退出 命令行模式::或/ 将光标移动到最末行 搜寻数据 读取或替换 退出vi 显示行号 ...

  5. ElasticSearch入门(2) —— 基础概念

    在Elasticsearch中,文档归属于一种类型(type),而这些类型存在于索引(index)中,我们可以画一些简单的对比图来类比传统关系型数据库: Relational DB -> Dat ...

  6. Android Studio安装应用时报错 installation failed with message Failed to finalize session......

    解决方法: 在AndroidManifest.xml中的provider中的authorities后加几个数字即可. 2017.09.01: 我发现有的项目AndroidManifest.xml中没有 ...

  7. Windows下memcached的安装配置

    下载windows 32位或64位 memcached 下载 memcached_dll 1.将第一个包解压放某个盘下面,比如在c:\memcached.2.在终端(也即cmd命令界面)下输入 'c: ...

  8. Go语言备忘录:反射的原理与使用详解

    目录: 预备知识 reflect.Typeof.reflect.ValueOf Value.Type 动态调用 通过反射可以修改原对象 实现类似“泛型”的功能   1.预备知识: Go的变量都是静态类 ...

  9. DevOps之服务故障

    唠叨话 关于德语噢屁事的知识点,仅提供精华汇总,具体知识点细节,参考教程网址,如需帮助,请留言. <DevOps服务故障> 0.故障1.设施故障2.设备故障3.系统故障4.虚拟化故障5.存 ...

  10. http服务详解(1)——一次完整的http服务请求处理过程

    前言:要熟练掌握一个服务,首先需要非常了解这个服务的工作过程,这篇就详细解释了http服务的请求处理过程. 一次完整的http请求处理过程 (1)流程图 (2)过程详解 0.DNS域名解析:递归查询. ...