- 浏览: 1780191 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (641)
- vb2005xu自己动手系列 (174)
- vb2005xu开发文章转摘 (47)
- vb2005xu发发牢骚 (99)
- vb2005xu新技术灌水 (12)
- vb2005xu网络资源集锦 (21)
- vb2005xu软件学习 (60)
- 英语学习 (3)
- JavaScript 学习 (54)
- JAVA OOP 巩固 之 CustomDatabase 的开发 (5)
- 2013年9月之前所在公司 记事 (7)
- FleaPHP/QEEPHP 资料 (87)
- JAVA MAIL 学习篇 (4)
- Python turbogears (5)
- Rails 个人开发四部曲 (3)
- 名人传 (8)
- iwp framework (5)
- 高考零分作文 (5)
- startos (8)
- lua (0)
- 职场 (1)
最新评论
-
hellotieye:
自己 评论 自己 挺嗨呀
Mysql sql查询时 if 的用法 -
igevin:
转载请标明出处,转自Gevin的博客http://blog.i ...
RESTful API 编写指南 -
Theobob:
...
实现简单的ACL -
vb2005xu:
比如 对于 curl 调用就不再需要 加各种if 判断了,
$ ...
搞一个简单的数据打印工具AsDebug の Laravel -
vb2005xu:
http://geekplux.com/wiki/
YII2 模块内自定义错误页
这个功能应该是很多网站都需要的,这里仅仅实现了一个基于文件的简易版本,数据库的版本请自行参考实现,我这里实现的功能很不完善,比如未过滤是否为同一访客,是否为同一IP等等,这里仅仅是给大家提供一个参考.
使用PHP语言实现,如果你看不明白,请留言.... 相信原理都差不多..
为什么使用PHP做范例语言?
不外乎两个因素: 1. PHP语法通俗易懂,有一点程序基础的人就可以了解;2.代码量比较少
本功能实现的代码的目录结构见 [ajax实时任务提示功能的实现 -- vb2005xu自己动手系列(1)],这个可以作为它的插件插入,这里也是阐述一种开发思想:在网站开发的过程中,功能是逐步添加的,一开始并不能也不可以做到尽善尽美的设计.建议在刚开始的时候规划好项目的结构,后期好使用插件扩展功能实现.. 本人表达能力不好,哪位好的请留言表述,我将综合大家的东西改进,谢谢!
个人推荐JAVA web 初级开发者使用三层模型的架构来开发,不管现在是否流行,他始终是一种好的开发规范!
个人推荐PHP web 初级开发者使用MVC模型来开发网站,如果是开发富客户端的系统,则建议将VC两层[其实是一层半]全部分担给客户端也就是浏览器[和用户]来完成. 为什么说是"一层半",V全部给客户端,C的一半给浏览器[功能的连接地址],一半在服务器端执行[代码实现],比如使用EXTJS来开发的时候.....
不再闲聊,让我们进入正题吧:还是之前的风格,先给大家看代码,不明白的请留言,我们共同探讨,高手也请留下精彩言论,我好总结,帮助我们这些入门者,谢谢大家.
再次说明功能基于之前文章 [ajax实时任务提示功能的实现 -- vb2005xu自己动手系列(1),这个也可以当成是一个插件],但是功能完全独立出来了,之后的一系列文章也是在此之上进行扩展,当是领着大家实现一个完整的项目,比如后面会讲到用户授权的实现[将采用RBAC,J基于角色的访问控制 来实现],UI层也会使用EXTJS来做,也有站内邮件也就是短信息的实现等等
为了方便插件的插入和功能的扩展,所以在这里我们要改动代码结构
第一, 改下[ajax实时任务提示功能的实现]讲到的/ucren/taskofpig/Controller/Default.php,
修改以下位置:
1. 将文件名称由Default.php改为TaskOfPig.php
2. 将里面的类名称由Controller_Default 改为Controller_TaskOfPig
3. 修改这个类的构造函数名称由Controller_Default 改为Controller_TaskOfPig
其他代码不变
第二,新建一个/ucren/taskofpig/Controller/Default.php文件
里面代码如下,暂时只有这些
<?php
class Controller_Default extends FLEA_Controller_Action
{
function actionIndex(){
redirect(url('TaskOfPig'),0); //停顿0秒后,重定向到index.php?ctl=TaskOfPig
}
}
?>
对于这个文件中使用的连接设置ctl参数见[ajax实时任务提示功能的实现]中的/ucren/taskofpig/appConfig.php
文件的controllerAccessor 设置.
//各位注意目录使用Serv这是这个它是一个插件,(*^__^*) 嘻嘻……
/ucren/taskofpig/Serv/VisiterService.php
<?php
class Serv_VisiterService
{
var $log_file ;
function Serv_VisiterService($log_file) //必须传递日志文件路径进来
{
$this->log_file = $log_file ;
}
function addVisiter()
{
$newVisiter = array(
'guest_ip' => $_SERVER["REMOTE_ADDR"] ,
'time' => date('Y-m-d H:i:s') ,
'guest_port' => $_SERVER["REMOTE_PORT"] ,
'request_uri' => $_SERVER["REQUEST_URI"] ,
'accept_lang' => $_SERVER["HTTP_ACCEPT_LANGUAGE"] ,
'os_info' => $_SERVER["HTTP_USER_AGENT"]
);
//$fp = fopen("{$this->prj_dir}/_log/visiter.dat","a+b");
$fp = fopen($this->log_file,"a+b");
fwrite($fp,serialize($newVisiter));
//写入换行符--LINUX是\n windows是 \r\n ,这里要求注意 单引号与双引号的区别
fwrite($fp,"\r\n");//单引号不转义
fclose($fp);
}
function getVisiters()
{
if (!file_exists($this->log_file))
return null ;
$visiterArr_tmp = file($this->log_file) ;//将文件读入数组中
foreach($visiterArr_tmp as $visiter)
{
$visiterArr[] = unserialize($visiter) ;
}
return $visiterArr ;
}
}
?>
这里在上文中新建的/ucren/taskofpig/Controller/Default.php文件中添加如下代码,完整代码如下
<?php
FLEA::loadFile('Serv_VisiterService.php',true) ;//加载访客统计插件代码到程序中
class Controller_Default extends FLEA_Controller_Action
{
var $prj_dir ;var $visiters ;var $smarty ;
function actionIndex(){
$this->prj_dir = '.' ;
$this->smarty = $this->_getView(); //获取smarty模板对象,在/ucren/taskofpig/appConfig.php中配置
$this->visiters = new Serv_VisiterService("{$this->prj_dir}/log/visiter.dat") ;
//添加访客
$this->visiters->addVisiter();
redirect(url('TaskOfPig'),0); //停顿0秒后,重定向到index.php?ctl=TaskOfPig
}
function actionVisiters() //访客统计列表
{
$this->smarty->assign('sitename','任务计划表 -- 生气猪') ;
$this->smarty->assign('opname','访客统计') ;
$rows = $this->visiters->getVisiters();
$this->smarty->assign('rowSet',$rows);
$this->_showPage('taskofpig.visiterlist.html');
}
}
?>
/ucren/taskofpig/tpl/taskofpig.visiterlist.html
<!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><%$sitename%> -- <%$opname%></title>
</head>
<body>
<hr>
<table width="100%" border="1" cellspacing="1" bgcolor="#cfdadc">
<tr bgcolor="#e8edec" align="center">
<td><b>访问次序</b></td>
<td><b>IP地址</b></td>
<td><b>日期/时间</b></td>
<td><b>客户机信息</b></td>
</tr>
<%section name=rowIndex loop=$rowSet%>
<tr align="center">
<%*注意怎么获取rowIndex的语法*%>
<td><%$smarty.section.rowIndex.index%></td>
<td><%$rowSet[rowIndex].guest_ip%></td>
<td><%$rowSet[rowIndex].time%></td>
<td><%$rowSet[rowIndex].os_info%></td>
</tr>
<%/section%>
</table>
</body>
</html>
这样就可以在浏览器中敲入
http://localhost/ucren/taskofpig 进入,缺省将在后台加入访问者信息,如果你敲入
http://localhost/ucren/taskofpig/index.php?act=visiters
可以进入来访者信息查看页面,例子截图如下
下一篇文章将对这个例子做一个扩展,怎么导出为PDF格式的访客列表
发表评论
-
ws-http 最简单轻量的PHP CURL工具库
2016-07-29 20:44 2632欢迎大家拍砖 https://github.com/to ... -
Facade 包装类 -- 解决视图里面长长的命名空间调用问题
2016-04-20 10:48 1750有时候模版里面定义 ... -
PHP单例模式面试注意事项
2015-10-20 09:57 1958最近面了不少PHP从业者,有实习生也有5/6年以上的开发者 ... -
NGINX 配置 SSL 证书 搭建 HTTPS 网站
2015-10-19 19:19 2921下面是详细的配置过程: 1、在服务器上使用 Open ... -
关于php cron任务管理的实现假想
2015-10-17 21:25 1904之前每开发一个计划任务功能均需要在线上操作crontab来新 ... -
修改一些PHP工具
2014-10-24 19:27 1805原来的代码 在非框架下是木有问题的,但是用在框架下就报错, ... -
sublime text linux上中文输入问题的终极解决方案
2014-10-13 11:07 8569我一直在使用sublime text ... -
qeephp3.0 发布了
2014-10-07 17:21 1707QeePHP 是一个快速、灵活的开发框架。应用各种成熟的架构 ... -
swiftmailer 的快捷助手 qser-mailer
2014-09-09 23:52 3595近日在对charsen的修改版上进行了再次的修改与调整,对 ... -
PHP 中简单的伪造IP刷票实现
2014-05-15 17:06 2764一般而言,我们的获取用户真实ip的代码大致是这样... / ... -
PHP5.5 htmlspecialchars 返回null的坑
2014-04-25 12:23 2616昨天在写 PDO数据库封装类的 测试代码时遇到这个问题,取 ... -
PHP 5.5 empty + 魔术变量 的坑
2014-04-16 15:53 1606今天在测试代码时遇到这么一个疑问? dump((in ... -
Aert_Log: 设计一个精简易用的日志
2014-04-13 18:28 2488日志记录对于应用的 ... -
创建一个简单的短链服务类
2013-07-01 18:20 1372整理一个简单的短链算法,整理到自己的代码库中: &l ... -
收集常用的PHP简单代码
2013-06-30 17:53 2059对于日常工作中整理出来的某些功能做个简单梳理: 1 ... -
简易PHP路由,支持正反向url解析支持
2013-06-21 22:23 8233几年前实现了一个简单的正向路由,那时候不会写反向路由解析, ... -
系统学习のCACHE 学习
2012-11-21 13:58 1911http://www.phpfans.net/article/ ... -
YY 下 sql查询封装类 不知道好不好使
2012-07-18 16:44 1337<?php class Pkg_Db_Actor { ... -
生成后台管理菜单 admin_menu 类
2012-05-05 18:27 4655<?php /** * 管理菜单 * */ ... -
抽取个sql生成器工具 -- 摘自 fuelphp1.1 版本
2012-04-25 20:17 1233<?php /** * Sql 创造者类 * ...
相关推荐
【标题】"Ajax 实时任务提示功能的实现 -- vb2005xu 自己动手系列(1)" 是一篇关于如何在 VB.NET 开发环境中利用 AJAX 技术创建实时任务提示功能的文章。在这个系列的第一部分,作者 vb2005xu 分享了构建这样一个功能...
标题中的“自己动手精简的Mysql5 不到2.5M”指的是作者通过一系列定制化操作,将MySQL数据库管理系统优化并精简到一个较小的体积,大约2.5MB。这通常涉及到移除不必要的组件、插件和服务,以便在资源有限的环境中...
2. Timer控件:VB中的Timer控件可以设置定时触发事件,用于控制按键精灵的动作间隔,实现定时操作。 3. Form和Control事件:VB的窗体(Form)和控件(Control)具有丰富的事件处理机制,如Click、KeyDown、KeyUp等...
VB2005中的SerialPort控件相较于VB6中的MSComm控件提供了更多的灵活性和功能,这使得在.NET环境下进行串口编程变得更加简单高效。开发者可以根据实际需求选择合适的工具和技术来进行串口通讯的开发工作。
在VB下开发加壳工具,可以利用VB丰富的库函数和强大的编程模型,实现复杂的功能,同时保持代码的可读性和维护性。 “托克加壳VB版”很可能利用了VB的API调用,如CreateProcess、VirtualAlloc等,来实现对原程序的...
RTL8211E-VB-CG是该系列中的一个变种,可能在电气特性或功能上有所优化。 在“RTL8211E-VB-CG-原理图参考设计”中,工程师可以找到以下关键知识点: 1. **PCI Express接口**:RTL8211E-VB-CG采用PCI Express (PCIe...
2. **VB(Visual Basic)编程**:VB是Microsoft开发的一种面向对象的编程语言,以其易学易用而著称。在固高运动控制卡的应用中,开发者可以通过VB编写用户界面,实现与控制卡的交互,设置参数,监控设备状态,以及...
在VB(Visual Basic)编程环境中,实现抓屏功能可以为用户带来极大的便利,尤其是在软件开发、测试或教学等场景中。本教程将详细介绍如何利用VB编写程序,实现全屏、活动窗口以及自定义区域的截图功能。 首先,我们...
vb编程与s7-200通讯,包括源代码,库文件
本知识点将深入探讨如何在VB.NET 2005中连接MySQL数据库,执行查询,加载数据到Windows应用,并实现数据搜索功能。 首先,我们需要在项目中引用MySQL的数据提供者。安装MySQL .NET Connector后,可以在"项目" -> ...
标题中的“VB 文件夹浏览选择控件.rar”指的是一个基于Visual Basic(VB)开发的控件,用于在应用程序中实现文件夹浏览和选择的功能。这个控件使得开发者能够轻松地集成到自己的VB程序中,让用户能够方便地在Windows...
VB-PowerWrap 允许开发者在发布他们的程序时不需要再加入一大堆 的 OCX 与 DLL 文件。该程序可以帮助 Visual Basic 程序员在发布他们 的可执行文件时不需要再担心关于其他链接库与 OCX 的问题了。VB-Powe rWrap 允许...
【标题】:“一款多功能浏览文件夹-VB” 在IT领域,VB(Visual Basic)是一种流行的编程语言,由微软公司开发,主要用于创建...通过分析源代码,开发者可以了解如何利用VB实现类似功能,进一步提升自己的编程技能。
本文将详细讲解瑞昱(Realtek)公司的千兆以太网控制器RTL8211E-VB-CG、RTL8211E-VL-CG和RTL8211EG-VB-CG的相关知识,包括它们的主要特性、功能、应用以及如何在硬件设计中正确使用这些芯片。 首先,RTL8211系列是...
- 开发者可以引用这个 DLL 文件,在自己的项目中实现 OPC 功能,而无需从头编写底层通信代码。 6. **opcsvr-for-test**: - 这可能是用来测试 OPC 客户端的 OPC 服务器实例,开发者可以使用它来验证客户端的正确...
这些文件会提供实现"鼠标引道样子"功能的具体代码细节,包括VB语法、函数调用、变量定义以及可能的算法实现。通过分析这些文件,我们可以深入理解作者是如何利用VB来控制鼠标行为并构建“蜘蛛网”般的程序结构或界面...
VB(Visual Basic)是一种由微软公司开发的事件驱动编程语言,因其简单易学、功能强大的特点,在开发Windows应用程序中被广泛使用。本系统的标题“vb-lib-kang-vb.rar_VB 界面_vb lib_vb 图书 管理 系统_管理系统 vb...