您好,欢迎访问一九零五行业门户网

PHP+MYSQL+AJAX实现每日签到功能

php+mysql+ajax实现每日签到功能
网站上支持每日签到以及签到送礼等互动功能,不仅有利于提高网站用户的活跃度,也有利于促进用户的粘合度和互动性。下面分析下使用php配合mysql、ajax来制作了一个简单的每日签到功能。
一、web前端及ajax部分文件index.html
<html> <head> <meta http-equiv=content-type content="text/html;charset=utf-8"> <title>php+ajax+mysql实现每日签到</title> <script type="text/javascript" src="js/jquery.min.js"></script> <script type="text/javascript"> //page load get num $(window).ready(function(){ dogetdays(); }); //get sign days function dogetdays(){ $.get("/sign.php?do=getday",{},function(data){ $("#days").html(data); }); } //do sign function dosign(){ $.get("/sign.php?do=sign",{},function(data){ if(data==1){ alert("sign success!"); window.location.href='/'; }else if(data==2){ alert("already sign today! next tomorrow!"); } }); } </script> </head> <body> <a style="cursor:pointer;" onclick="dosign();">签到<span>连续签到<span id="days"></span>天</span></a> </body> </html>
二、php后端处理部分
sign.php文件
<?php if ($_get['do']=='getday'){ $db=new mysqli('localhost','root','123456','sign'); $uid=2; $getday="select `signdays` from `user` where `id`= {$uid}"; $day=$db -> query($getday); $days =$day -> fetch_array(mysqli_assoc); echo $days['signdays']; } if ($_get['do']=='sign'){ $db=new mysqli('localhost','root','123456','sign'); $uid=2; $time=time(); //check sign today $todaybegin=strtotime(date('y-m-d')." 00:00:00"); $todayend= strtotime(date('y-m-d')." 23:59:59"); $checksignsql="select * from `sign` where `uid` = {$uid} and `dateline` < {$todayend} and `dateline` > {$todaybegin} "; $checksigntoday= $db -> query($checksignsql); $checksign = $checksigntoday -> fetch_array(mysqli_assoc); if (empty($checksign)){ $sql="select * from `sign` where `uid` = {$uid} "; $return = $db -> query($sql) -> fetch_array(mysql_assoc); //check sign table exist uid record if (empty($return)){//no $insertsql="insert into `sign` (`uid`,`dateline`) values ('{$uid}','{$time}') "; $insert = $db -> query($insertsql); $updatesignsql="update `user` set `signdays` =1 where `id` = {$uid} "; $db -> query($updatesignsql); echo 1; }else{ // check is continuous ? reset with login set signdays as 0 !!!!! $yesterdaybegin= strtotime(date("y-m-d",strtotime("-1 day"))." 00:00:00"); $yesterdayend= strtotime(date("y-m-d",strtotime("-1 day"))." 23:59:59"); $checkcontinusql="select * from `sign` where `uid` = {$uid} and `dateline` < {$yesterdayend} and `dateline` > {$yesterdaybegin}"; $checkcontinuyesterday = $db ->query($checkcontinusql) -> fetch_array(mysql_assoc);   if (!empty($checkcontinuyesterday)){   $replacesql="replace into `sign` (`uid`,`dateline`) values ('{$uid}','{$time}') ";   $replace=$db -> query($replacesql); $updatesignsql="update `user` set `signdays` = `signdays` + 1 where `id` = {$uid} "; $db -> query($updatesignsql); echo 1; }else{ } } }else{ echo 2;// allready sign. } } ?>
三、mysql数据库部分
create table if not exists `sign` ( `uid` int(11) not null, `dateline` varchar(10) collate utf8_bin not null, primary key (`uid`) ) engine=myisam default charset=utf8 collate=utf8_bin; insert into `sign` (`uid`, `dateline`) values (1, '1389072071'), (2, '1389072735'); create table if not exists `user` ( `id` int(11) not null auto_increment comment 'userid', `username` varchar(35) collate utf8_bin not null comment 'username', `signdays` int(11) not null comment '签到天数', primary key (`id`) ) engine=myisam default charset=utf8 collate=utf8_bin auto_increment=3 ; insert into `user` (`id`, `username`, `signdays`) values (1, 'ggbound', 4), (2, 'other', 1);
其它类似信息

推荐信息