thinkphp写出伪定时器的效果

时间:2023-02-08 20:16:30

要求:客户每天在个人中心修改自己发布文章的次数为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;

thinkphp写出伪定时器的效果

GaimsgController.class.php

thinkphp写出伪定时器的效果thinkphp写出伪定时器的效果
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 "您今天修改信息的次数已用完,请明日再修改信息!";
}
}
View Code