当前位置:首页 > CMS教程 > phpcms > 列表

【phpcms-v9】怎样在<script src="xxx.php"></script>标记.

发布:smiling 来源: PHP粉丝网  添加日期:2014-10-24 10:01:34 浏览: 评论:0 

【phpcms-v9】怎样在<script src="xxx.php"></script>标记中引入php文件:

1.文章详情页统计点击数量时:

<scriptlanguage="JavaScript"src="http://www.phpfensi.com/api.php?op=count&id=41&modelid=1"></script>

  1. <?php   
  2. defined('IN_PHPCMS'or exit('No permission resources.');    
  3. /**  
  4.  * 点击统计  
  5.  */   
  6. $db = '';   
  7. $db = pc_base::load_model('hits_model');   
  8. if($_GET['modelid'] && $_GET['id']) {   
  9.     $model_arr = array();   
  10.     $model_arr = getcache('model','commons');   
  11.     $modelid = intval($_GET['modelid']);   
  12.     $hitsid = 'c-'.$modelid.'-'.intval($_GET['id']);   
  13.     $r = get_count($hitsid);   
  14.     if(!$rexit;   
  15.     extract($r);   
  16.     hits($hitsid);   
  17.        
  18.     /*  
  19.      *如果在php标记中,必须使用echo输出javascript代码到网页中,相当于直接在网页中写javascript代码  
  20.      */   
  21.     echo "\$('#todaydowns').html('$dayviews');";   
  22.     echo "\$('#weekdowns').html('$weekviews');";   
  23.     echo "\$('#monthdowns').html('$monthviews');";   
  24. elseif($_GET['module'] && $_GET['id']) {   
  25.     $module = $_GET['module'];   
  26.     if((preg_match('/([^a-z0-9_\-]+)/i',$module))) exit('1');   
  27.     $hitsid = $module.'-'.intval($_GET['id']);   
  28.     $r = get_count($hitsid);   
  29.     if(!$rexit;   
  30.     extract($r);   
  31.     hits($hitsid);   
  32. }   
  33.    
  34.    
  35. /**  
  36.  * 获取点击数量  
  37.  * @param $hitsid  
  38.  */   
  39. function get_count($hitsid) {   
  40.     global $db;   
  41.     $r = $db->get_one(array('hitsid'=>$hitsid));     
  42.     if(!$rreturn false;      
  43.     return $r;     
  44. }   
  45.    
  46. /**  
  47.  * 点击次数统计  
  48.  * @param $contentid  
  49.  */   
  50. function hits($hitsid) {   
  51.     global $db;   
  52.     $r = $db->get_one(array('hitsid'=>$hitsid));   
  53.     if(!$rreturn false;   
  54.     $views = $r['views'] + 1;   
  55.     $yesterdayviews = (date('Ymd'$r['updatetime']) == date('Ymd'strtotime('-1 day'))) ? $r['dayviews'] : $r['yesterdayviews'];   
  56.     $dayviews = (date('Ymd'$r['updatetime']) == date('Ymd', SYS_TIME)) ? ($r['dayviews'] + 1) : 1;   
  57.     $weekviews = (date('YW'$r['updatetime']) == date('YW', SYS_TIME)) ? ($r['weekviews'] + 1) : 1;   
  58.     $monthviews = (date('Ym'$r['updatetime']) == date('Ym', SYS_TIME)) ? ($r['monthviews'] + 1) : 1;   
  59.     $sql = array('views'=>$views,'yesterdayviews'=>$yesterdayviews,'dayviews'=>$dayviews,'weekviews'=>$weekviews,'monthviews'=>$monthviews,'updatetime'=>SYS_TIME); 
  60.     return $db->update($sqlarray('hitsid'=>$hitsid));   
  61. }   
  62.    
  63. ?>   

如果没有在php标记中,则可直接写javascript代码,会将下面一行代码直接当做javascript代码载入网页.

$('#hits').html('<?php echo $views?>');//php代码本身就是一种内潜入式代码,可以将php脚本潜入到html代码中,只不过这个文件中的html代码几乎为零而已. 

2.使用场合:需要在静态的html文件中实时的显示一些动态数据时使用.

3.数据源的调用代码:

<scripttype="text/javascript"src="http://www.hebei800.cn/index.php?m=dbsource&c=call&a=get&id=2"></script>

  1. /*  
  2.      * 数据源的调用:<script type="text/javascript" src="http://www.phpfensi.com/index.php?m=dbsource&c=call&a=get&id=2"></script>  
  3.      */   
  4.     public function get() {   
  5.         //数据源id:即zp_datacall数据表中自增id   
  6.         $id = isset($_GET['id']) && intval($_GET['id']) ? intval($_GET['id']) : exit();   
  7.         //获取当前数据源记录   
  8.         if ($data = $this->db->get_one(array('id'=>$id))) {   
  9.             //运算符的优先级搞清楚,1-先赋值  2-再进行非逻辑   
  10.             if (!$str = tpl_cache('dbsource_'.$id,$data['cache'])) {//如果没有生成缓存   
  11.                 if ($data['type'] == 1) { //自定义SQL调用   
  12.                     $get_db = pc_base::load_model("get_model");//不设置要查询的数据表,只执行查询操作   
  13.                     //拼接sql语句   
  14.                     $sql = $data['data'].(!emptyempty($data['num']) ? " LIMIT $data[num]" : '');   
  15.                     $r$get_db->query($sql);//执行查询sql语句,注意:sql语句中已经有表名   
  16.                     while(($s = $get_db->fetch_next()) != false) {//查询sql语句中的数据表   
  17.                         $str[] = $s;//将查询到的表记录置入$str[]二维数组   
  18.                     }   
  19.                 } else {//非自定义sql调用情况   
  20.                     //寻找对应模块下的xxx_tag.class.php文件   
  21.                     $filepath = PC_PATH.'modules'.DIRECTORY_SEPARATOR.$data['module'].DIRECTORY_SEPARATOR.'classes'.DIRECTORY_SEPARATOR.$data['module'].'_tag.class.php';   
  22.                     if (file_exists($filepath)) {   
  23.                         //如果存在,则引入pc标签类库文件   
  24.                         $pc_tag = pc_base::load_app_class($data['module'].'_tag'$data['module']);    
  25.                         //调用方法   
  26.                         if (!method_exists($pc_tag$data['action'])) {   
  27.                             exit();   
  28.                         }   
  29.                         $sql = string2array($data['data']);//sql语句,如:select * from zp_block   
  30.                         $sql['action'] = $data['action'];//方法   
  31.                         $sql['limit'] = $data['num'];//数量   
  32.                         unset($data['num']);   
  33.                         $str  = $pc_tag->$data['action']($sql);   
  34.                            
  35.                     } else {   
  36.                         exit();   
  37.                     }   
  38.                 }   
  39.                 //如果缓存时间不为空,则缓存到caches/caches_template/dbsource/$id.php文件中   
  40.                 //缓存的是编译后的文件   
  41.                 if ($data['cache']) setcache('dbsource_'.$id$str'tpl_data');   
  42.             }//没生成缓存的情况   
  43.             echo $this->_format($data['id'], $str$data['dis_type']);//参数3-输出方法(1-json 2-xml 3-js)   
  44.         }   
  45.     }   
  46.        
  47.     private function _format($id$data$type) {   
  48.         switch($type) {   
  49.             case '1'://json   
  50.                 if (CHARSET == 'gbk') {   
  51.                     $data = array_iconv($data'gbk''utf-8');   
  52.                 }   
  53.                 return json_encode($data);//将数据json化,再输出   
  54.                 break;   
  55.                    
  56.             case '2'://xml   
  57.                 $xml = pc_base::load_sys_class('xml');   
  58.                 return $xml->xml_serialize($data);//将数据xml化,再输出   
  59.                 break;   
  60.                    
  61.             case '3'://js      js的情况没有使用到$data参数数据   
  62.                 pc_base::load_app_func('global');//引入global.func.php公共函数库文件   
  63.                 ob_start();//开启缓冲区   
  64.                 include template_url($id);//生成缓存文件,应引入缓存文件中内容(编译后的内容),此函数主要用来编译template字段到缓存文件   
  65.                 $html = ob_get_contents();//获取缓冲区中内容   
  66.                 ob_clean();//清空缓存区   
  67.                 return format_js($html);//将文本格式成适合js输出的字符串,注意:此函数主要通过 通过document.write()动态将编译后的代码输出到网页中   
  68.                 break;   
  69.         }   
  70.     }   
  71.  
  72. /**  
  73.  * 将文本格式成适合js输出的字符串;输出javascript代码  
  74.  * @param string $string 需要处理的字符串  
  75.  * @param intval $isjs 是否执行字符串格式化,默认为执行  
  76.  * @return string 处理后的字符串  
  77.  */   
  78. function format_js($string$isjs = 1) {   
  79.     $string = addslashes(str_replace(array("\r""\n""\t"), array(''''''), $string));   
  80.     return $isjs ? 'document.write("'.$string.'");' : $string;   
  81. }   

案例:test6.html

  1. <html>   
  2. <head>   
  3. </head>   
  4. <body>   
  5. <script src="test5.php" type="text/javascript"></script>   
  6. </body>   
  7. </html>

test5.php

  1. <?php   
  2. header("content-type:text/html;charset=utf-8");   
  3. echo "document.write('你好');";   
  4. ?>   
  5. //你好   
  6. document.write("你好");  

结果:你好你好

Tags: phpcms标记文件 phpcms引入php

分享到: