zoukankan      html  css  js  c++  java
  • 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 . " ] 次 
    ";//显示剩余修改次数
                                echo "您修改的信息已传送到后台。。。";
                            } else {
                                echo "修改未成功,请重新修改信息或联系客服!";//每天自动清空post_coun字段
                            }
                        } else {
                            echo "您今天修改信息的次数已用完,请明日再修改信息!";
                        }
    }
    View Code

    二:会员注册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('/(^(13d|15[^4D]|17[13678]|18d)d{8}|170[^346D]d{7})$/', $username)){//手机号登录
                    $this->_do_mobile_login();
                }else{
                    $this->_do_email_login(); // 用户名或者邮箱登录
                    session('uname',$username);
                }
            }
        }
    View Code

    ___________________________________

  • 相关阅读:
    ubuntu在图形界面下打开一个终端
    [置顶] 屠夫与大夫
    service bound(一)
    Android Interface Definition Language (AIDL)
    service bound(二)
    移动应用开发原则
    Service bound(三)
    Linux 安装SSH服务
    JDK中设计模式
    Bad Hair Day【单调栈】
  • 原文地址:https://www.cnblogs.com/cuizhenyu/p/7148993.html
Copyright © 2011-2022 走看看