原文发表于“安青论坛”:http://bbs.ahu.edu.cn/viewthread.php?tid=434972
网站更新:
09-14:手机版支持“签到“功能
暑假在公司实习的时候,利用空余时间写了这个程序。因为时间仓促,没有好好的规划和设计,所以代码写的很乱,拓展性不强。
网址:http://ahuec.tk
一,为什么要写这个程序
1、以后找工作面试的时候可以拿出来说事。
2、希望作为一个开源项目把它做下去。
目前的想法是这样的,想借助安青这个平台汇聚一群对互联网(电子商务)和网络编程感兴趣的同学,以这个程序为平台,相互切磋,相互学习,不断的完善代码,直至它能够部署应用。当然,如果可能的话也可以协作着手写一个更有趣更cool的程序。
未来的任务有:
1、安全防范的加强。编写时对这块考虑的不是太多,仅仅是简单验证表单、过滤了一下敏感字符。
2、后台代码的重构。包括整体架构的重新设计、函数的改写等等。
3、CSS和javascript代码的优化。包括规范函数和css属性的命名,提高代码的复用性。
4、页面美工。我不懂美术……
5、运营推广。后期等程序完善之后,需要进行运营推广。
所以,如果你对这个项目感兴趣,有一定的程序编写能力,能够担当上述中的一项工作,可以PM我,咱们一块商讨具体事宜。
二、程序介绍
1、涉及到的语言:PHP(后台)、Html、javascript(JQuery)、SQL
2、平台环境:Apache+PHP+Mysql
3、PHP框架:Thinkphp2.1
程序已实现的功能:
1、发表微博,支持@和标签功能,暂不支持图片等多媒体文件的上传
2、删除微博
3、发表/删除评论
4、发送私信
5、Ajax轮询实现消息及时通知
6、头像上传和截取
7、添加/取消关注(好友管理)
8、转发微博
9、简单的微博搜索
10、针对手机的页面设计
三、编程心得:
1、一个函数要尽可能的实现最少的功能,这样才能提高函数的复用性
2、如果时间容许,最好是做好前期的架构设计和规划。
3、不要重复造车轮。要学会吸收别人的成果。
程序中用到的“车轮”:
1、Javascript图片截取:jquery.Jcrop-0.9.8
2、javascript弹出框:thickbox2.0
3、手机浏览器的识别:mobile_device_detect.php
4、日历插件:calendar.js
5、表单验证:checkform.js
上述代码我一并打包放在附件里面了。有需要的同学可以下载。 代码.rar (1.38 MB)
四、ThinkPHP学习笔记
thinkphp采用MVC分层结构,单一入口(index.php),通过url路由来调用class和function
普通模式下的url:
http://localhost/appName/index.php?m=moduleName&a=actionName&id=1
如果使用PATHINFO模式的话,URL成为:
http://localhost/appName/index.php/moduleName/actionName/id/1/
当然你也可以设置为REWRITE模式,隐去index.php
http://localhost/appName/moduleName/actionName/id/1/
系统在没有指定模块和操作的时候,会执行默认的模块和操作,在ThinkPHP的惯例配置里面是Index模块和index操作
CURD操作
1、查询
$a = M(‘member’); //实例化对象a
$a->where(‘id=1 and gender = 1′)->order(‘date desc’)-.limit(10)->select(); //where查询条件;order排序
复制代码
2、添加
$a = M(‘member’);
$data['name] = jaychou;
$data['gender']=1
$a->add($data)
复制代码
3、更新:
$a ->where(‘id=1′)->save($ata);
或者 $a->where(‘id=1′)->data($data)->save(); // 根据条件保存修改的数据
4、删除
$a->where(“id=1″)->delete();
表单操作(录入数据):
1、
$a = M(‘member’)
$data['uid'] = 1;
$data['username'] = langer;
$a->add($data);
复制代码
2、如果在add之前已经创建数据对象的话(例如使用了create或者data方法),add方法就不需要再传入数据了。使用create方法的例子
$a = D(‘member’);
if($a->create()){
$a->add();// 根据表单提交的POST数据创建数据对象
}
此时可以在MemberMode.class.phpl中设定自动验证和自动填充条件:
- <?php
- class MemberModel extends Model {
- // 自动验证设置
- protected $_validate = array(
- array(‘uid’,'require’,'标题必须!’,1),
- array(‘email’,'email’,'邮箱格式错误!’,2),
- array(‘title’,”,’标题已经存在’,0,’unique’,self::MODEL_INSERT),
- );
- // 自动填充设置
- protected $_auto = array(
- array(‘gender’,’1′,self::MODEL_INSERT),
- array(‘create_time’,'time’,self::MODEL_INSERT,’function’),
- );
- }
- ?>
五、截图:
















![Google Reader整理[08-10]](http://www.ecnotes.com/wp-content/uploads/2011/08/Google-Reader整理08-10.jpeg)