php广告加载类用法实例

5年以前  |  阅读数:362 次  |  编程语言:PHP 

本文实例讲述了php广告加载类的用法,非常实用。分享给大家供大家参考。具体方法如下:

该php广告加载类,支持异步与同步加载。需要使用Jquery实现。

ADLoader.class.php类文件如下:


    <?php 
    /** 广告加载管理类 
    *  Date:  2013-08-04 
    *  Author: fdipzone 
    *  Ver:  1.0 
    * 
    *  Func: 
    *  public load     加载广告集合 
    *  public setConfig  广告配置 
    *  private getAds    根据channel创建广告集合 
    *  private genZoneId  zoneid base64_encode 处理 
    *  private genHtml   生成广告html 
    *  private checkBrowser 检查是否需要同步加载的浏览器 
    */ 

    class ADLoader{ // class start 

      private static $_ads = array();   // 广告集合 
      private static $_step = 300;    // 广告加载间隔 
      private static $_async = true;   // 是否异步加载 
      private static $_config = array(); // 广告设置文件 
      private static $_jsclass = null;  // 广告JS class 


      /** 加载广告集合 
      * @param String $channel 栏目,对应config文件 
      * @param int   $step  广告加载间隔 
      * @param boolean $async  是否异步加载 
      */ 
      public static function load($channel='', $step='', $async=''){ 
        if(isset($step) && is_numeric($step) && $step>0){ 
          self::$_step = $step; 
        } 

        if(isset($async) && is_bool($async)){ 
          self::$_async = $async; 
        } 

        // 判断浏览器,如IE强制使用同步加载 
        if(!self::checkBrowser()){ 
          self::$_async = false; 
        } 

        self::getAds($channel); 
        self::genZoneId(); 

        return self::genHtml(); 
      } 

      /** 设置config 
      * @param String $config 广告配置 
      * @param String $jsclass js class文件路径 
      */ 
      public static function setConfig($config=array(), $jsclass=''){ 
        self::$_config = $config; 
        self::$_jsclass = $jsclass; 
      } 


      /** 根据channel创建广告集合 
      * @param String $channel 栏目 
      */ 
      private static function getAds($channel=''){ 
        $AD_Config = self::$_config; 
        if($AD_Config!=null){ 
          self::$_ads = isset($AD_Config[$channel])? $AD_Config[$channel] : $AD_Config['default']; 
        } 
      } 

      /** zoneid base64_encode 处理 */ 
      private static function genZoneId(){ 

        // 同步加载广告不需要处理zoneid 
        if(!self::$_async){ 
          return ; 
        } 

        $ads = self::$_ads; 
        for($i=0,$len=count($ads); $i<$len; $i++){ 
          if(isset($ads[$i]['zoneId'])){ 
            $ads[$i]['zoneId'] = base64_encode('var zoneid='.$ads[$i]['zoneId'].';'); 
          } 
        } 
        self::$_ads = $ads; 
      } 

      /** 生成广告html */ 
      private static function genHtml(){ 
        $ads = self::$_ads; 
        $html = array(); 
        if(self::$_jsclass!=null && $ads){ 
          array_push($html, '<script type="text/javascript" src="'.self::$_jsclass.'"></script>'); 

          // 同步需要预先加载 
          if(!self::$_async){ 
            foreach($ads as $ad){ 
              array_push($html, '<div id="'.$ad['domId'].'_container" style="display:none">'); 
              array_push($html, '<script type="text/javascript">'); 
              array_push($html, 'ADLoader.preload('.json_encode($ad).');'); 
              array_push($html, '</script>'); 
              array_push($html, '</div>'); 
            } 
          } 

          array_push($html, '<script type="text/javascript">'); 
          array_push($html, 'var ads='.json_encode($ads).';'); 
          array_push($html, '$(document).ready(function(){ ADLoader.load(ads, '.self::$_step.', '.intval(self::$_async).'); });'); 
          array_push($html, '</script>'); 
        } 
        return implode("\r\n", $html); 
      } 

      /** 判断是否需要强制同步加载的浏览器 */ 
      private static function checkBrowser(){ 
        $user_agent = $_SERVER['HTTP_USER_AGENT']; 
        if(strstr($user_agent,'MSIE')!=''){ 
          return false; 
        } 
        return true; 
      } 

    } // class end 
    ?>

ADConfig.php文件如下:


    <?php 
    /** 广告配置文件 **/ 

    return array( 

      'case_openx' => array( 
        array( 
          'type' => 'openx', 
          'domId' => 'ad_728x90', 
          'zoneId' => 452 
        ), 
        array( 
          'type' => 'openx', 
          'domId' => 'ad_300x250', 
          'zoneId' => 449 
        ), 
        array( 
          'type' => 'openx', 
          'domId' => 'ad_l2_300x250', 
          'zoneId' => 394 
        ), 
      ), 

      'case_url' => array( 
        array( 
          'type' => 'url', 
          'domId' => 'ad_728x90', 
          'url' => 'adurl.php?zoneid=452' 
        ), 
        array( 
          'type' => 'url', 
          'domId' => 'ad_300x250', 
          'url' => 'adurl.php?zoneid=449' 
        ), 
        array( 
          'type' => 'url', 
          'domId' => 'ad_l2_300x250', 
          'url' => 'adurl.php?zoneid=394' 
        ) 
      ), 

      'case_sync_openx' => array( 
        array( 
          'type' => 'openx', 
          'domId' => 'ad_728x90', 
          'zoneId' => 452 
        ), 
        array( 
          'type' => 'openx', 
          'domId' => 'ad_300x250', 
          'zoneId' => 449 
        ), 
        array( 
          'type' => 'openx', 
          'domId' => 'ad_l2_300x250', 
          'zoneId' => 394 
        ), 
      ), 

      'default' => array( 
        array( 
          'type' => 'openx', 
          'domId' => 'ad_728x90', 
          'zoneId' => 452 
        ), 
        array( 
          'type' => 'openx', 
          'domId' => 'ad_300x250', 
          'zoneId' => 449 
        ), 
        array( 
          'type' => 'openx', 
          'domId' => 'ad_l2_300x250', 
          'zoneId' => 394 
        ), 
      ), 

    ); 

    ?>

ADLoader.js文件如下:


    /** 异步加载广告 
    *  Date:  2013-08-04 
    *  Author: fdipzone 
    *  Ver:  1.0 
    */ 
    var ADLoader = (function(){ 

      var _ads = [],   // 广告集合 
        _step = 300,  // 广告加载间隔 
        _async = true, // 是否异步加载 
        _loaded = 0;  // 已经加载的广告数 

      /** loadAd 循环加载广告 
      * @param int c 第几个广告 
      */ 
      function loadAD(c){ 
        if(_loaded>=_ads.length){ 
          return ; 
        } 

        if($('#'+_ads[c].domId).length>0){ // 判断dom是否存在 

          if(_async){ // 异步执行 

            crapLoader.loadScript(getScript(_ads[c]), _ads[c].domId, { 
              success: function(){ 
                completeAd(); 
              } 
            }); 

          }else{ // 将同步加载的广告显示 

            var ad_container = $('#'+_ads[c].domId+'_container'); 
            ad_container.find('embed').attr('wmode','transparent').end().find('object').each(function(k, v){ 
              v.wmode = 'transparent'; // 将flash变透明 
            }); 
            $('#'+_ads[c].domId)[0].appendChild(ad_container[0]); 
            ad_container.show(); 

            completeAd(); 
          } 
        }else{ // dom不存在 
          completeAd(); 
        } 
      } 

      /** 加载完广告后处理 */ 
      function completeAd(){ 
        _loaded ++; 
        setTimeout(function(){ 
          loadAD(_loaded); 
        }, _step);     
      } 

      /** 获取广告 
      * @param Array ad 广告参数 
      */ 
      function getScript(ad){ 
        var ret = null; 

        switch(ad.type){ 
          case 'openx': // openx code ad 
            ret = 'data:text/javascript;base64,' + ad.zoneId + 'dmFyIG0zX3UgPSAobG9jYXRpb24ucHJvdG9jb2w9PSdodHRwczonPydodHRwczovL2Fkcy5ubWcuY29tLmhrL3d3dy9kZWxpdmVyeS9hanMucGhwJzonaHR0cDovL2Fkcy5ubWcuY29tLmhrL3d3dy9kZWxpdmVyeS9hanMucGhwJyk7CnZhciBtM19yID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjk5OTk5OTk5OTk5KTsKaWYgKCFkb2N1bWVudC5NQVhfdXNlZCkgZG9jdW1lbnQuTUFYX3VzZWQgPSAnLCc7CmRvY3VtZW50LndyaXRlICgiPHNjciIrImlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnIHNyYz0nIittM191KTsKZG9jdW1lbnQud3JpdGUgKCI/em9uZWlkPSIgKyB6b25laWQpOwpkb2N1bWVudC53cml0ZSAoJyZhbXA7Y2I9JyArIG0zX3IpOwppZiAoZG9jdW1lbnQuTUFYX3VzZWQgIT0gJywnKSBkb2N1bWVudC53cml0ZSAoIiZhbXA7ZXhjbHVkZT0iICsgZG9jdW1lbnQuTUFYX3VzZWQpOwpkb2N1bWVudC53cml0ZSAoZG9jdW1lbnQuY2hhcnNldCA/ICcmYW1wO2NoYXJzZXQ9Jytkb2N1bWVudC5jaGFyc2V0IDogKGRvY3VtZW50LmNoYXJhY3RlclNldCA/ICcmYW1wO2NoYXJzZXQ9Jytkb2N1bWVudC5jaGFyYWN0ZXJTZXQgOiAnJykpOwpkb2N1bWVudC53cml0ZSAoIiZhbXA7bG9jPSIgKyBlc2NhcGUod2luZG93LmxvY2F0aW9uKSk7CmlmIChkb2N1bWVudC5yZWZlcnJlcikgZG9jdW1lbnQud3JpdGUgKCImYW1wO3JlZmVyZXI9IiArIGVzY2FwZShkb2N1bWVudC5yZWZlcnJlcikpOwppZiAoZG9jdW1lbnQuY29udGV4dCkgZG9jdW1lbnQud3JpdGUgKCImY29udGV4dD0iICsgZXNjYXBlKGRvY3VtZW50LmNvbnRleHQpKTsKaWYgKGRvY3VtZW50Lm1tbV9mbykgZG9jdW1lbnQud3JpdGUgKCImYW1wO21tbV9mbz0xIik7CmRvY3VtZW50LndyaXRlICgiJz48XC9zY3IiKyJpcHQ+Iik7'; 
            break; 

          case 'url': // url ad 
            ret = ad.url; 
            break; 
        } 
        return ret; 
      } 

      /** 同步加载广告 
      * @param Array ad 广告参数 
      */ 
      function writeAd(ad){ 
        switch(ad.type){ 
          case 'openx': 
            var m3_u = (location.protocol=='https:'?'https://ads.nmg.com.hk/www/delivery/ajs.php':'http://ads.nmg.com.hk/www/delivery/ajs.php'); 
            var m3_r = Math.floor(Math.random()*99999999999); 
            if (!document.MAX_used) document.MAX_used = ','; 
            document.write ("<scr"+"ipt type='text/javascript' src='"+m3_u); 
            document.write ("?zoneid=" + ad.zoneId); 
            document.write ('&cb;=' + m3_r); 
            if (document.MAX_used != ',') document.write ("&exclude;=" + document.MAX_used); 
            document.write (document.charset ? '&charset;='+document.charset : (document.characterSet ? '&charset;='+document.characterSet : '')); 
            document.write ("&loc;=" + escape(window.location)); 
            if (document.referrer) document.write ("&referer;=" + escape(document.referrer)); 
            if (document.context) document.write ("&context;=" + escape(document.context)); 
            if (document.mmm_fo) document.write ("&mmm;_fo=1"); 
            document.write ("'><\/scr"+"ipt>"); 
            break; 
           case 'url': 
            document.write ('<script type="text/javascript" src="' + ad.url + '"></script>'); 
            break; 
        } 
      } 

      obj = { 

        /** 加载广告 
        * @param Array  ads  广告集合 
        * @param int   step 广告加载间隔 
        * @param boolean async true:异步加载 false:同步加载 
        */ 
        load: function(ads, step, async){ 
          _ads = ads; 

          if(typeof(step)!='undefined'){ 
            _step = step; 
          } 

          if(typeof(async)!='undefined'){ 
            _async = async; 
          } 

          loadAD(_loaded); 
        }, 

        /** 预加载广告 */ 
        preload: function(ad){ 
          if($('#'+ad.domId).length>0){  // 判断dom是否存在 
            writeAd(ad); 
          } 
        } 
      } 
      return obj; 

    }()); 

    /* crapLoader */ 
    var crapLoader = (function() { 

      var isHijacked = false, 
        queue = [], 
        inputBuffer = [], 
        writeBuffer = {}, 
        loading = 0, 
        elementCache = {}, 
        returnedElements = [], 
        splitScriptsRegex = /(<script[\s\S]*?<\/script>)/gim, 
        globalOptions = { 
          autoRelease: true, 
          parallel: true, 
          debug: false 
        }, 
        defaultOptions = { 
          charset: undefined, 
          success: undefined, 
          func: undefined, 
          src: undefined, 
          timeout: 3000 
        },publ, 
        head = document.getElementsByTagName("head")[0] || document.documentElement, 
        support = { 
          scriptOnloadTriggeredAccurately: false, 
          splitWithCapturingParentheses: ("abc".split(/(b)/)[1]==="b") 
        }; 

      function checkQueue () { 
        if(queue.length) { 
          loadScript( queue.shift() ); 
        } else if(loading === 0 && globalOptions.autoRelease) { 
          debug("Queue is empty. Auto-releasing."); 
          publ.release(); 
        } 
      } 

      function checkWriteBuffer (obj) { 
        var buffer = writeBuffer[obj.domId], 
          returnedEl; 

        if(buffer && buffer.length) { 
          writeHtml( buffer.shift(), obj ); 

        } else { 
          while (returnedElements.length > 0) { 
            returnedEl = returnedElements.pop(); 
            var id = returnedEl.id; 
            var elInDoc = getElementById(id); 
            if (!elInDoc) { continue; } 
            var parent = elInDoc.parentNode; 
            elInDoc.id = id + "__tmp"; 
            parent.insertBefore(returnedEl, elInDoc); 
            parent.removeChild(elInDoc); 
          } 
          finished(obj); 
        } 
      } 

      function debug (message, obj) { 
        if(!globalOptions.debug || !window.console) { return; } 
        var objExtra = ""; 
        if(obj) { 
          objExtra = "#"+obj.domId+" "; 
          var depth = obj.depth; 
          while(depth--) { objExtra += "  "; } 
        } 
        console.log("crapLoader " + objExtra + message); 
      } 

      function extend (t, s) { 
        var k; 
        if(!s) { return t; } 
        for(k in s) { 
          t[k] = s[k]; 
        } 
        return t; 
      } 

      function finished (obj) { 
        if(obj.success && typeof obj.success === "function") { 
          obj.success.call( document.getElementById(obj.domId) ); 
        } 
        checkQueue(); 
      } 

      function flush (obj) { 
        var domId = obj.domId, 
          outputFromScript, 
          htmlPartArray; 

        outputFromScript = stripNoScript( inputBuffer.join("") ); 
        inputBuffer = []; 

        htmlPartArray = separateScriptsFromHtml( outputFromScript ); 

        if(!writeBuffer[domId]) { 
          writeBuffer[domId] = htmlPartArray; 
        } else { 
          Array.prototype.unshift.apply(writeBuffer[domId], htmlPartArray); 
        } 
        checkWriteBuffer(obj); 
      } 

      function getCachedElById (domId) { 
        return elementCache[domId] || (elementCache[domId] = document.getElementById(domId)); 
      } 

      function getElementById (domId) { 
        return ( publ.orgGetElementById.call ? 
          publ.orgGetElementById.call(document, domId) : 
          publ.orgGetElementById(domId) ); 
      } 

      function getElementByIdReplacement (domId) { 
        var el = getElementById(domId), 
          html, frag, div, found; 

        function traverseForElById(domId, el) { 
          var children = el.children, i, l, child; 
          if(children && children.length) { 
            for(i=0,l=children.length; i<l; i++) { 
              child = children[i]; 
              if(child.id && child.id === domId) { return child; } 
              if(child.children && child.children.length) { 
                var tmp = traverseForElById(domId, child); 
                if (tmp) return tmp; 
              } 
            } 
          } 
        } 

        function searchForAlreadyReturnedEl(domId) { 
          var i, l, returnedEl; 
          for(i=0,l=returnedElements.length; i<l; i++) { 
            returnedEl = returnedElements[i]; 
            if(returnedEl.id === domId) { return returnedEl; } 
          } 
        } 

        if(el) { return el; } 

        if (returnedElements.length) { 
          found = searchForAlreadyReturnedEl(domId); 
          if (found) { 
            return found; 
          } 
        } 

        if(inputBuffer.length) { 
          html = inputBuffer.join(""); 
          frag = document.createDocumentFragment(); 
          div = document.createElement("div"); 
          div.innerHTML = html; 
          frag.appendChild(div); 
          found = traverseForElById(domId, div); 
          if (found) { 
            returnedElements.push(found); 
          } 
          return found; 
        } 
      } 

      var globalEval = (function () { 
        return (window.execScript ? function(code, language) { 
          window.execScript(code, language || "JavaScript"); 
        } : function(code, language) { 
          if(language && !/^javascript/i.test(language)) { return; } 
          window.eval.call(window, code); 
        }); 
      }()); 

      function isScript (html) { 
        return html.toLowerCase().indexOf("<script") === 0; 
      } 

      function runFunc (obj) { 
        obj.func(); 
        obj.depth++; 
        flush(obj); 
      } 

      function loadScript (obj) { 
        loading++; 
        // async loading code from jQuery 
        var script = document.createElement("script"); 
        if(obj.type) { script.type = obj.type; } 
        if(obj.charset) { script.charset = obj.charset; } 
        if(obj.language) { script.language = obj.language; } 

        logScript(obj); 

        var done = false; 
        // Attach handlers for all browsers 
        script.onload = script.onreadystatechange = function() { 
          loading--; 
          script.loaded = true; 
          if ( !done && (!this.readyState || 
              this.readyState === "loaded" || this.readyState === "complete") ) { 
            done = true; 
            script.onload = script.onreadystatechange = null; 
            debug("onload " + obj.src, obj); 
            flush(obj); 
          } 
        }; 

        script.loaded = false; 
        script.src = obj.src; 
        obj.depth++; 

        // Use insertBefore instead of appendChild to circumvent an IE6 bug. 
        // This arises when a base node is used (#2709 and #4378). 
        head.insertBefore( script, head.firstChild ); 
        setTimeout(function() { 
          if(!script.loaded) { throw new Error("SCRIPT NOT LOADED: " + script.src); } 
        }, obj.timeout); 
      } 

      function logScript (obj, code, lang) { 
        debug((code ? 
          "Inline " + lang + ": " + code.replace("\n", " ").substr(0, 30) + "..." : 
          "Inject " + obj.src), obj); 
      } 

      function separateScriptsFromHtml (htmlStr) { 
        return split(htmlStr, splitScriptsRegex); 
      } 

      function split (str, regexp) { 
        var match, prevIndex=0, tmp, result = [], i, l; 

        if(support.splitWithCapturingParentheses) { 
          tmp = str.split(regexp); 
        } else { 
          // Cross browser split technique from Steven Levithan 
          // http://blog.stevenlevithan.com/archives/cross-browser-split 
          tmp = []; 
          while(match = regexp.exec(str)) { 
            if(match.index > prevIndex) { 
              result.push(str.slice(prevIndex, match.index)); 
            } 

            if(match.length > 1 && match.index < str.length) { 
              Array.prototype.push.apply(tmp, match.slice(1)); 
            } 

            prevIndex = regexp.lastIndex; 
          } 

          if(prevIndex < str.length) { 
            tmp.push(str.slice(prevIndex)); 
          } 

        } 

        for(i=0, l=tmp.length; i<l; i=i+1) { 
          if(tmp[i]!=="") { result.push(tmp[i]); } 
        } 
        return result; 
      } 

      function stripNoScript (html) { 
        return html.replace(/<noscript>[\s\S]*?<\/noscript>/ig, ""); 
      } 

      function trim (str) { 
        if(!str) { return str; } 
        return str.replace(/^\s*|\s*$/gi, ""); 
      } 

      function writeHtml (html, obj) { 
        if( isScript(html) ) { 
          var dummy = document.createElement("div"); 
          dummy.innerHTML = "dummy<div>" + html + "</div>"; // trick for IE 
          var script = dummy.children[0].children[0]; 
          var lang = script.getAttribute("language") || "javascript"; 
          if(script.src) { 
            obj.src = script.src; 
            obj.charset = script.charset; 
            obj.language = lang; 
            obj.type = script.type; 
            loadScript(obj); 
          } else { 
            var code = trim( script.text ); 
            if(code) { 
              logScript( obj, code, lang); 
              globalEval( code, lang); 
            } 
            flush(obj); 
          } 
        } else { 
          var container = getCachedElById(obj.domId); 
          if(!container) { 
            throw new Error("crapLoader: Unable to inject html. Element with id '" + obj.domId + "' does not exist"); 
          } 

          html = trim(html); // newline before <object> cause weird effects in IE 
          if(html) { 
            container.innerHTML += html; 
          } 
          checkWriteBuffer(obj); 
        } 
      } 

      function writeReplacement (str) { 
        inputBuffer.push(str); 
        debug("write: " + str); 
      } 

      function openReplacement () { 
        // document.open() just returns the document when called from a blocking script: 
        // http://www.whatwg.org/specs/web-apps/current-work/#dom-document-open 
        return document; 
      } 

      function closeReplacement () { 
        // document.close() does nothing when called from a blocking script: 
        // http://www.whatwg.org/specs/web-apps/current-work/#dom-document-close 
      } 

      publ = { 
        hijack: function(options) { 
          if(isHijacked) { return; } 
          isHijacked = true; 
          extend(globalOptions, options); 
          if(globalOptions.parallel && !support.scriptOnloadTriggeredAccurately) { 
            globalOptions.parallel = false; 
            debug("Browsers onload is not reliable. Disabling parallel loading."); 
          } 

          document.write = document.writeln = writeReplacement; 
          document.open = openReplacement; 
          document.close = closeReplacement; 
          document.getElementById = getElementByIdReplacement; 
        }, 

        release: function() { 
          if(!isHijacked) { return; } 
          isHijacked = false; 
          document.write = this.orgWrite; 
          document.writeln = this.orgWriteLn; 
          document.open = this.orgOpen; 
          document.close = this.orgClose; 
          document.getElementById = this.orgGetElementById; 
          elementCache = {}; 
        }, 

        handle: function(options) { 
          if(!isHijacked) { 
            debug("Not in hijacked mode. Auto-hijacking."); 
            this.hijack(); 
          } 
          var defaultOptsCopy = extend({}, defaultOptions); 
          var obj = extend(defaultOptsCopy, options); 
          obj.depth = 0; 

          if (!obj.domId) { 
            obj.domId = "craploader_" + new Date().getTime(); 
            var span = document.createElement("span"); 
            span.id = obj.domId; 
            document.body.appendChild(span); 
          } 

          if (options.func) { 
            runFunc(obj); 
            return; 
          } 

          if(globalOptions.parallel) { 
            setTimeout(function() { 
              loadScript(obj); 
            }, 1); 
          } else { 
            queue.push(obj); 
            setTimeout(function() { 
              if(loading === 0) { 
                checkQueue(); 
              } 
            }, 1); 
          } 
        }, 

        loadScript: function(src, domId, options) { 
          if (typeof domId !== "string") { 
            options = domId; 
            domId = undefined; 
          } 
          this.handle(extend({ 
            src:  src, 
            domId: domId 
          }, options)); 
        }, 

        runFunc: function(func, domId, options) { 
          if (typeof domId !== "string") { 
            options = domId; 
            domId = undefined; 
          } 
          this.handle( extend({ 
            domId: domId, 
            func:   func 
          }, options) ); 
        }, 

        orgGetElementById  : document.getElementById, 
        orgWrite      : document.write, 
        orgWriteLn     : document.writeln, 
        orgOpen       : document.open, 
        orgClose      : document.close, 
        _olt        : 1, 
        _oltCallback    : function() { 
          support.scriptOnloadTriggeredAccurately = (publ._olt===2); 
        } 
      }; 

      return publ; 
    }());

demo.php示例程序如下:


    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
    <html> 
     <head> 
     <meta http-equiv="content-type" content="text/html; charset=utf-8"> 
     <title> AD Loader </title> 
     <style type="text/css"> 
     .banner1{margin:10px; border:1px solid #CCCCCC; width:728px; height:90px;} 
     .banner2{margin:10px; border:1px solid #CCCCCC; width:300px; height:250px;} 
     </style> 
     <script type="text/javascript" src="http://code.jquery.com/jquery-1.10.1.min.js"></script> 
     </head> 

     <body> 
     <div class="banner1" id="ad_728x90"></div> 
     <div class="banner2" id="ad_300x250"></div> 
     <div class="banner2" id="ad_l2_300x250"></div> 

     <?php 
      function showAD($channel='', $step='', $async=''){ 
       include('ADLoader.class.php'); 
       $ad_config = include('ADConfig.php'); 
       ADLoader::setConfig($ad_config, 'ADLoader.js'); 
       return ADLoader::load($channel, $step, $async); 
      } 

      echo showAD('case_openx'); // 异步加载 
      //echo showAD('case_url');  // url方式异步加载 
      //echo showAD('case_sync_openx', 300, false); // 同步加载 
     ?> 

     </body> 
    </html>

adurl.php文件如下:


    <?php
    $zoneid = isset($_GET['zoneid'])? intval($_GET['zoneid']) : 0; 
    if($zoneid){ 
    ?> 
    var zoneid = <?=$zoneid ?>; 
    var m3_u = (location.protocol=='https:'?'https://ads.nmg.com.hk/www/delivery/ajs.php':'http://ads.nmg.com.hk/www/delivery/ajs.php'); 
    var m3_r = Math.floor(Math.random()*99999999999); 
    if (!document.MAX_used) document.MAX_used = ','; 
    document.write ("<scr"+"ipt type='text/javascript' src='"+m3_u); 
    document.write ("?zoneid=" + zoneid); 
    document.write ('&cb;=' + m3_r); 
    if (document.MAX_used != ',') document.write ("&exclude;=" + document.MAX_used); 
    document.write (document.charset ? '&charset;='+document.charset : (document.characterSet ? '&charset;='+document.characterSet : '')); 
    document.write ("&loc;=" + escape(window.location)); 
    if (document.referrer) document.write ("&referer;=" + escape(document.referrer)); 
    if (document.context) document.write ("&context;=" + escape(document.context)); 
    if (document.mmm_fo) document.write ("&mmm;_fo=1"); 
    document.write ("'><\/scr"+"ipt>"); 
    <? } ?>

本文所述完整实例源码点击此处本站下载

希望本文所述对大家的php程序设计有所帮助。

 相关文章:
PHP分页显示制作详细讲解
SSH 登录失败:Host key verification failed
获取IMSI
将二进制数据转为16进制以便显示
获取IMEI
文件下载
贪吃蛇
双位运算符
PHP自定义函数获取搜索引擎来源关键字的方法
Java生成UUID
发送邮件
年的日历图
提取后缀名
在Zeus Web Server中安装PHP语言支持
让你成为最历害的git提交人
Yii2汉字转拼音类的实例代码
再谈PHP中单双引号的区别详解
指定应用ID以获取对应的应用名称
Python 2与Python 3版本和编码的对比
php封装的page分页类完整实例