thinkphp写出伪定时器的效果 || tp会员注册1年后到期自动拉黑
一 伪定时器的效果
要求:客户每天在个人中心修改自己发布文章的次数为10次,要求每天次数清零
思路:在网上找了些方法,最后还是自己试着写写看。
客户每天不一定都会上,怎么在客户登录的时候判断是否是当天第一次登录,添加两个字段post_enddaytime(存储的是最后登陆时间的当天的23:59:59,因为规定是每天零点更新,这个时间随便自己定),第二个字段为post_coun(会员修改次数),客户第一次登录时间是7月1号,修改了三次文章,那么post_enddaytime存储的是7月1号23:59:59的时间戳,post_coun=3,客户第二次登录时间为7月7号,当客户点击修改的时候,判断$time(此为当前时间日期的时间戳)是否大于post_enddaytime存储的时间戳,如果是大于的话,说明这是客户今天的第一次登录,post_enddaytime改为今天(7月7号)23:59:59的时间戳,post_coun=0;
GaimsgController.class.php
public function ad() { if ( empty( $_POST ) ) //如果$_POST空,显示添加页面, { echo '您输入的内容不能为空!'; } else //如果$_POST不为空,走验证,验证是否成功,添加数据库 { $username = session("uname"); $n = D( "posts" ); $ter = D( "term_relationships" ); //此表是设置添加的文章的object_id,term_id $wz_id = $_POST["wz_id"]; $ttimee = date( "Y-m-d H:i:s" ); $ttim = strtotime( $ttimee ); // $firstdaystr=date("Y-m-d H:i:s",1499702399); // var_dump($firstdaystr); // die(); $thisdaystart = mktime( 0, 0, 0, date( "m" ), date( "d" ), date( "Y" ) ); $tdayStart = mktime( 23, 59, 59, date( "m" ), date( "d" ), date( "Y" ) ); $data[ 'id' ] = $wz_id; $data[ 'post_adm' ] = $username; //设置定时器开始 $enddaytime = $n->where("id='{$wz_id}'")->getField("post_enddaytime"); if($ttim > $enddaytime) { $dataad['id'] = $wz_id; $dataad['post_coun'] = 0; $dataad['post_enddaytime'] = $tdayStart;//如果当前时间$ttim>客户最后登陆修改存储的时间$enddaytime,那么字段换位今天的零点(23:59:59) $n->save($dataad); } //设置定时器结束 $cn = $n->where("id='{$wz_id}'")->getField("post_coun");//修改次数 if ( $cn < 10 ) { $nn = $n->save( $data ); session( id, $wz_id ); if ( $nn ) { $n->where("id='{$wz_id}'")->setInc('post_coun');//thinkphp 根据文章id count +1 操作方法(setInc) $post_coun = $n->where("id='{$wz_id}'")->getField("post_coun");//显示剩余修改次数 $cn_cs = 10 - $post_coun;//显示剩余修改次数 echo "剩余修改次数:[ " . $cn_cs . " ] 次 \n";//显示剩余修改次数 echo "您修改的信息已传送到后台。。。"; } else { echo "修改未成功,请重新修改信息或联系客服!";//每天自动清空post_coun字段 } } else { echo "您今天修改信息的次数已用完,请明日再修改信息!"; } }
二:会员注册1年后到期自动拉黑
// 登录验证提交 public function dologin(){ $use = M("Users"); $username=I('post.username'); $yh = $use->where("user_login = '{$username}'")->select();//根据用户提交的用户名搜索用户创建的时间 $tim = $yh[0]['create_time'];//创建用户的时间 $timec = strtotime("$tim + 1 year");//(创建用户的时间+1年)的时间戳 $notim = strtotime('now');//现在的时间的时间戳,如果现在的时间戳大于(创建的时间+1年)的时间戳时,执行拉黑操作(user_status = 0)和友好提示,else执行正常访问 if($notim >$timec) { $data['user_status'] = 0; $use->where("user_login = '{$username}'")->save($data); $this->error("您注册的会员已到期,请联系客服或续费使用!"); } else { if(!sp_check_verify_code()){ $this->error("验证码错误!"); } $users_model=M("Users"); $rules = array( //array(验证字段,验证规则,错误提示,验证条件,附加规则,验证时间) array('username', 'require', '手机号/邮箱/用户名不能为空!', 0 ), array('password','require','密码不能为空!',0), ); if($users_model->validate($rules)->create()===false){ $this->error($users_model->getError()); } $username=I('post.username'); if(preg_match('/(^(13\d|15[^4\D]|17[13678]|18\d)\d{8}|170[^346\D]\d{7})$/', $username)){//手机号登录 $this->_do_mobile_login(); }else{ $this->_do_email_login(); // 用户名或者邮箱登录 session('uname',$username); } } }
___________________________________