【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>
- <?php
- defined('IN_PHPCMS') or exit('No permission resources.');
- /**
- * 点击统计
- */
- $db = '';
- $db = pc_base::load_model('hits_model');
- if($_GET['modelid'] && $_GET['id']) {
- $model_arr = array();
- $model_arr = getcache('model','commons');
- $modelid = intval($_GET['modelid']);
- $hitsid = 'c-'.$modelid.'-'.intval($_GET['id']);
- $r = get_count($hitsid);
- if(!$r) exit;
- extract($r);
- hits($hitsid);
- /*
- *如果在php标记中,必须使用echo输出javascript代码到网页中,相当于直接在网页中写javascript代码
- */
- echo "\$('#todaydowns').html('$dayviews');";
- echo "\$('#weekdowns').html('$weekviews');";
- echo "\$('#monthdowns').html('$monthviews');";
- } elseif($_GET['module'] && $_GET['id']) {
- $module = $_GET['module'];
- if((preg_match('/([^a-z0-9_\-]+)/i',$module))) exit('1');
- $hitsid = $module.'-'.intval($_GET['id']);
- $r = get_count($hitsid);
- if(!$r) exit;
- extract($r);
- hits($hitsid);
- }
- /**
- * 获取点击数量
- * @param $hitsid
- */
- function get_count($hitsid) {
- global $db;
- $r = $db->get_one(array('hitsid'=>$hitsid));
- if(!$r) return false;
- return $r;
- }
- /**
- * 点击次数统计
- * @param $contentid
- */
- function hits($hitsid) {
- global $db;
- $r = $db->get_one(array('hitsid'=>$hitsid));
- if(!$r) return false;
- $views = $r['views'] + 1;
- $yesterdayviews = (date('Ymd', $r['updatetime']) == date('Ymd', strtotime('-1 day'))) ? $r['dayviews'] : $r['yesterdayviews'];
- $dayviews = (date('Ymd', $r['updatetime']) == date('Ymd', SYS_TIME)) ? ($r['dayviews'] + 1) : 1;
- $weekviews = (date('YW', $r['updatetime']) == date('YW', SYS_TIME)) ? ($r['weekviews'] + 1) : 1;
- $monthviews = (date('Ym', $r['updatetime']) == date('Ym', SYS_TIME)) ? ($r['monthviews'] + 1) : 1;
- $sql = array('views'=>$views,'yesterdayviews'=>$yesterdayviews,'dayviews'=>$dayviews,'weekviews'=>$weekviews,'monthviews'=>$monthviews,'updatetime'=>SYS_TIME);
- return $db->update($sql, array('hitsid'=>$hitsid));
- }
- ?>
如果没有在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>
- /*
- * 数据源的调用:<script type="text/javascript" src="http://www.phpfensi.com/index.php?m=dbsource&c=call&a=get&id=2"></script>
- */
- public function get() {
- //数据源id:即zp_datacall数据表中自增id
- $id = isset($_GET['id']) && intval($_GET['id']) ? intval($_GET['id']) : exit();
- //获取当前数据源记录
- if ($data = $this->db->get_one(array('id'=>$id))) {
- //运算符的优先级搞清楚,1-先赋值 2-再进行非逻辑
- if (!$str = tpl_cache('dbsource_'.$id,$data['cache'])) {//如果没有生成缓存
- if ($data['type'] == 1) { //自定义SQL调用
- $get_db = pc_base::load_model("get_model");//不设置要查询的数据表,只执行查询操作
- //拼接sql语句
- $sql = $data['data'].(!emptyempty($data['num']) ? " LIMIT $data[num]" : '');
- $r= $get_db->query($sql);//执行查询sql语句,注意:sql语句中已经有表名
- while(($s = $get_db->fetch_next()) != false) {//查询sql语句中的数据表
- $str[] = $s;//将查询到的表记录置入$str[]二维数组
- }
- } else {//非自定义sql调用情况
- //寻找对应模块下的xxx_tag.class.php文件
- $filepath = PC_PATH.'modules'.DIRECTORY_SEPARATOR.$data['module'].DIRECTORY_SEPARATOR.'classes'.DIRECTORY_SEPARATOR.$data['module'].'_tag.class.php';
- if (file_exists($filepath)) {
- //如果存在,则引入pc标签类库文件
- $pc_tag = pc_base::load_app_class($data['module'].'_tag', $data['module']);
- //调用方法
- if (!method_exists($pc_tag, $data['action'])) {
- exit();
- }
- $sql = string2array($data['data']);//sql语句,如:select * from zp_block
- $sql['action'] = $data['action'];//方法
- $sql['limit'] = $data['num'];//数量
- unset($data['num']);
- $str = $pc_tag->$data['action']($sql);
- } else {
- exit();
- }
- }
- //如果缓存时间不为空,则缓存到caches/caches_template/dbsource/$id.php文件中
- //缓存的是编译后的文件
- if ($data['cache']) setcache('dbsource_'.$id, $str, 'tpl_data');
- }//没生成缓存的情况
- echo $this->_format($data['id'], $str, $data['dis_type']);//参数3-输出方法(1-json 2-xml 3-js)
- }
- }
- private function _format($id, $data, $type) {
- switch($type) {
- case '1'://json
- if (CHARSET == 'gbk') {
- $data = array_iconv($data, 'gbk', 'utf-8');
- }
- return json_encode($data);//将数据json化,再输出
- break;
- case '2'://xml
- $xml = pc_base::load_sys_class('xml');
- return $xml->xml_serialize($data);//将数据xml化,再输出
- break;
- case '3'://js js的情况没有使用到$data参数数据
- pc_base::load_app_func('global');//引入global.func.php公共函数库文件
- ob_start();//开启缓冲区
- include template_url($id);//生成缓存文件,应引入缓存文件中内容(编译后的内容),此函数主要用来编译template字段到缓存文件
- $html = ob_get_contents();//获取缓冲区中内容
- ob_clean();//清空缓存区
- return format_js($html);//将文本格式成适合js输出的字符串,注意:此函数主要通过 通过document.write()动态将编译后的代码输出到网页中
- break;
- }
- }
- /**
- * 将文本格式成适合js输出的字符串;输出javascript代码
- * @param string $string 需要处理的字符串
- * @param intval $isjs 是否执行字符串格式化,默认为执行
- * @return string 处理后的字符串
- */
- function format_js($string, $isjs = 1) {
- $string = addslashes(str_replace(array("\r", "\n", "\t"), array('', '', ''), $string));
- return $isjs ? 'document.write("'.$string.'");' : $string;
- }
案例:test6.html
- <html>
- <head>
- </head>
- <body>
- <script src="test5.php" type="text/javascript"></script>
- </body>
- </html>
test5.php
- <?php
- header("content-type:text/html;charset=utf-8");
- echo "document.write('你好');";
- ?>
- //你好
- document.write("你好");
结果:你好你好
Tags: phpcms标记文件 phpcms引入php
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)