php廣告載入類用法執行個體,php載入用法執行個體_PHP教程

來源:互聯網
上載者:User

php廣告載入類用法執行個體,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, '');        // 同步需要積極式載入       if(!self::$_async){         foreach($ads as $ad){           array_push($html, '');           array_push($html, '');           array_push($html, '');         }       }        array_push($html, '');     }     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>");         break;        case 'url':         document.write ('');         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 = /(                <?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); // 同步載入  ?>    

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>"); <? } ?>

本文所述完整執行個體源碼點擊此處本站下載。

希望本文所述對大家的php程式設計有所協助。


php中類的用法

class myclass
{
function showerror($msg)
{
$msg=trim($msg);
echo "

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.