ci写微博php,php(CI框架)+ajax实现类似微博的东东

写在前面:好久没有更新博客,这段时间主要在写这个东西了,其实东西也不难,两三天就写好了。也收获了一些东西,这里做一下分享和总结。

需求:是学校新闻中心组织的一个活动,感恩母亲节微言活动,将收集到的祝福通过网站(wap端)展示出来,然后通过微信公共帐号,广播给同学们。

成果见:成电母亲节活动 ,用手机打开,效果好点~

功能有:

(1)通过下拉刷新查看状态(微信昵称+文字+图片);

(2)后台上传状态的界面,这里主要考虑到和谐的因素,没有像微博那样发布状态,而是我们来审核和发布;

(3)根据微信昵称搜索对应的状态;

(4)分享到新浪微博;

(5)用户点赞。

感觉东西主要在前端,现在我都还没怎么仔细看前端的代码,是凝聚工作室的同学写的,有时间看看,这里主要根据以上功能介绍下后台的实现逻辑。

(1)下拉刷新,查看状态:

自己稍微看了下ajax的请求,也看了点jquery的东东,,自己写不来,不过大概了解了原理,后台代码写起来不难。前端根据url接口请求数据,会带上页码信息,后端收到页码信息,就会去数据库取对应的数据,然后以json格式返回给前端即可。这里添加了一个剩余页码的字段,来通知前端数据没有了,不用用户再去加载一次,为用户着想。  其实,这里还没有完全设计好,不能通知有多少新消息,这个感觉需要记录住用户的加载时间,如果有新数据,就去通知用户,然后用户刷新获取新数据。

从上面也可以看出后端的数据库设计,哪些字段。这里特别指出的是,返回时间这个东西,应前端的需求(显示大小/用户体验这些),需要设计成“昨天、今天”这种时间的格式,所以需要对时间做一下判断,然后返回,从网上找了一个函数,参见:

//转换时间的显示格式

public function timeLine($t)

{

$t = strtotime($t);

$now = time();

$diff = $now - $t; // 计算出当前时间和给予时间的差,单位秒

if ($diff < 60) {

return $diff.' 秒前'; // 小于60秒

} elseif ($diff < 3600) {

return floor($diff / 60).' 分钟前'; //小于一小时

} elseif (date('Ymd', $now) == date('Ymd', $t)) {

return '今天 '.date('H:i', $t); // 今天

} elseif (strtotime(date('Ymd', $now)) - strtotime(date('Ymd', $t)) == 86400) {

return '昨天 '.date('H:i', $t); //昨天

} elseif (date('Y', $now)-date('Y', $t) <= 0) {

return date('m月d日', $t); // 一年内

} else {

return date('Y-m-d', $t); // 一年之外

}

}

(2)后台上传页面。

上传的数据包括:微信昵称、文字、图片,这里主要是图片上传这个东西,花费的时间多一点。图片上传直接用CI的文件上传类轻松解决,配置一下图片的参数就可以了。然后这里使用的是sae,使用的是storage服务,也就相当于电脑的硬盘。需要注意的是sae上部署的代码和本地的代码配置不一样,最明显的是数据库的配置,这个小项目用到的一些CI 的辅助类的系统文件也不一样,所以本地和新浪上需要两套代码(当然也有新浪的本地部署策略,我没有研究这个)。 我的方法是建两个工程,一个本地测试,一个用于新浪的svn上传。本地测试通过之后,将对应的代码添加到另外一个工程就好。

接着说图片的处理。我们打开新浪微博可以看到,默认打开的是小图(thumbnail),点击可以查看打图(bmiddle),还有查看原图的功能。这是为什么呢?当时自己还在纠结这个问题,前端可以控制图片的显示大小,直接传原图给前端就可以了,干嘛这么麻烦。原因是:节省流量、提高加载速度。。。很简单的道理。所以我们这里也类似做了这个图像的处理,同样使用的是CI 的图像处理类。跟上面一样,部署到sae可能会出错误,不用担心,一般使用sae版本的CI 版本可以解决问题~ 处理成功之后,同样保存在storage中,然后在数据库中存储路径,在前端请求数据的时候,返回这些数据就可以了。

(3)根据微信昵称搜索状态:

这个简单,根据数据库中的微信昵称字段,进行搜索就可以了;

(4)分享到新浪微博:

申请新浪微博的开放接口就可以了。http://open.weibo.com/sharebutton  。注意网站和应用的区别,以及上传东西的问题,我上传了好几次才审核通过,有次是网站内容不够丰富,上传点东西上去就好了。。。

(5)用户点赞:

点赞请求发过来,数据库中的字段+1就可以了,然后返回当前的赞的数量。这里没有做点赞的限制,也就是可以无限点赞。。。想着需要一张表记录赞的人数,而我们又没有用户这些~  当然限制IP也是一个思路。

最后,当然是源码了:源码下载链接

github链接(后面会上传):

写在后面:

现在在看python的django框架,准备用这个写个实验室的网站玩玩,,,java的搞不起啊,感觉有点复杂。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值