牛年开门红 “红包”抢不停
技术与开发
为什么要设计抢红包程序
数动连线程序员唐忠超:牛年到了,网站、论坛、社区等渴望迎来开门红——兴旺的人气,应该怎么做呢?通常的做法是派送开门红包,人人有份,不过我认为这种方法效果平平,调动不了用户的积极性。
后来我想到了抢红包的方法。具体的方法是,在特定时间段内随机发布“红包”(为了勾起大家的兴趣,最好不要是虚拟币,可以是勋章、道具等),用户点击“抢”按钮,他的用户名和留言便出现在特定页面的顶层(留言也可以不写)。
当“红包”随机生成时,属于顶层用户的。用户可以重复点击“抢”按钮。最后还需要将获得礼物的用户公布出来,以示系统的公正性。看到这里,大家明白了吧。我的这个程序(程序下载地址:http://www.shudoo.com/bzsoft),既可以调动用户的积极性,又可以获得点击率,可以说是一举两得。

第一步:抢红包
参加抢红包的用户可以通过点击“抢”按钮来占领可以获得红包的顶层,系统自动记录用户信息并显示出来,该记录中不包含已抢到礼物的用户。输入代码,其中关键代码如下所示(完整代码下载地址:http://www.shudoo.com/bzsoft):
<Li〉 留言:<textarea name="zf" cols="30" rows="5"> </textarea><input name="Action" type="hidden" value="get" /></li>
<li><input name="sub1" type="button" value=" 抢 " /></li>
</ul>
</form>
</div>
<div>
<ul><li>抢红包用户名</li><li>留言</li><li>参与时间</li></ul>
<?
//显示参与所有抢红包人的楼层次序
$sql="select username,zf,gif,theTime from `duobao` order by theTime desc";
$rows=$db->query($sql);
while($rs=$db->fetch_array($rows)){
echo '<ul>
//注意:$username为当前用户名
if($Action=='get'){
$r=$db->getone("select username from `duobao` where username='$username' and get='1'");//查找该抢红包用户是否已获得过礼物
if($r){//如果已获得则提示抢红包无效
echo '谢谢您的参与,你已经参加过抢红包。';
}else{//否则将该用户记录到数据库,提示抢红包成功!
$db->update("insert into `duobao` (id,username,zf,gif,theTime,get) values (NULL,'$username','$zf','','".$date('U')."',0)");
echo '恭喜您!你占领了顶层的抢红包位置!';
第二步:随机生成红包
我们将要发布的红包名称存入数组,当然,如果红包过多,可以使用数据库存储方式。设定一个时间,当到达时间,从数组或者数据库中随机提取一个红包派送给在该时间占领顶层的用户。输入代码,其中关键代码如下所示(完整代码下载地址:http://www.shudoo.com/bzsoft):
$gifs=array('社区金币','用户积分','礼物1','礼物2','礼物3');//礼物
$nextTime=strtotime('2008-12-29 00:00:00');//礼物指定发放时间
>
<div>
<ul>
<?
//到达时间获得礼物
if(date('U')>=$nextTime){
$num=rand(0,count($gifs)-1);//产生随机数
$gif=$gifs[$num];//随机选择礼物
$db->update("update `duobao` set get='1',gif='$gif' order by theTime desc limit 1)");
}
第三步:公布结果
将抢到红包的用户信息,包括用户名、获赠礼物名、获赠时间等从数据库中读取出来。输入代码,其中关键代码如下所示(完整代码下载地址:http://www.shudoo.com/bzsoft):
<div>
<ul><li>抢红包用户名</li><li>获得礼物</li><li>获得时间</li></ul>
<?
//公布抢红包结果
$sql="select username,gif,theTime from `duobao` where get='1' order by theTime desc";
$rows=$db->query($sql);
while($rs=$db->fetch_array($rows)){
echo '<ul><li>'.$rs['username'].'</li><li>'.$rs['gif'].'</li><li>'.$rs['theTime'].'</li></ul>';
}
编后
本文的程序还可以进行不少的改进,比如对参加抢红包的用户进行分级等。根据相似的原理,大家还可以开发出爱心接力、击鼓传花等游戏小程序。