当前位置:首页 » Emlog教程 » 利用cookie应该可以实现php指定时间随机一次

利用cookie应该可以实现php指定时间随机一次

在取出数据之后把数据缓存在客户端,然后cookie指定一个时间周期,在下次刷新时先判断这个cookie时间到期没,如果到期了就重新刷新,否则就调用本地缓存。以下是以emlog博客为案例的代码
<?php
    //载入全局加载项
    require_once 'init.php';
    //链接数据库
    $DB = MySql::getInstance();
    /*****************根据条件随机获取20条文章的GID***************/
    $sql = "SELECT * FROM ".DB_PREFIX."blog ORDER BY rand() DESC LIMIT 20";
    $list = $DB->query($sql);
    while($row = $DB->fetch_array($list)){
        $arrgid.= $row['gid'].',';
    }
    $arrgid = substr($arrgid,0,strlen($arrgid)-1);//去除最后一个逗号
    $arr = explode(",",$arrgid);//将获取的gid以逗号分割为数组
    
    
    /***********函数,根据文章gid输出文章标题与连接**************/
    function sylist($gid){
        $DB = MySql::getInstance();
        $sql = "SELECT * FROM ".DB_PREFIX."blog WHERE gid = '{$gid}'";
        $list = $DB->query($sql);
        while($row = $DB->fetch_array($list)){
            return '<li><a target="_blank" href="'.Url::log($row['gid']).'">'.$row['title'].'</li>';
        }
        
    }

    /***********根据cookie在指定时间内获取内容**************/
    //判断cookie【gid】是否存在
    if (isset($_COOKIE["gid"])){
        
        //判断cookie【date】过期时间是否存在
        if(isset($_COOKIE["date"])){
            
            echo '过期时间为:'.date("Y-m-d H:i:s", $_COOKIE["date"]).'<br/><br/>';
            
            //判断时间是否过期,当前时间大于cookie【date】中储存的时间则为过期
            if(time() > $_COOKIE["date"]){
                //如果过期了,重新创建过期时间
                setcookie("date", "", time()-3600);//删除过期时间
                setcookie("date", time()+60*1,time()+3600);//重新创建过期时间,其中的60*1为一分钟
                //刷新内容
                setcookie("gid", "", time()-3600);//删除过期内容
                setcookie("gid", $arrgid,time()+3600);//重新创建内容
            }

            //输出内容
            $arr = explode(",",$_COOKIE["gid"]);
            //循环输出数组
            foreach($arr as $value){
                echo sylist($value);
            } 
            
        }else{
            //如果不存在,则创建一个距离当前时间一分钟的时间为过期时间
            setcookie("date", time()+60*1,time()+3600);//其中的60*1为一分钟
            //如果date不存在时则会输出空白,此时随机输出内容
            foreach($arr as $value){
                echo sylist($value);
            }
        }
    }else{
        setcookie("date", time()+60*1,time()+3600);//其中的60*1为一分钟
        setcookie("gid", $arrgid,time()+3600);//如果gid不存在,则创建gidcookie,内容为随机获取的文章gid
        //如果gid不存在时则会输出空白,此时随机输出内容
        foreach($arr as $value){
            echo sylist($value);
        }
    }
?>
本文代码由emlog学院陈子文提供,舍力仅作保存分享之用!代码演示请转到daohang.shuyong.net查看
End
温馨提示:如果您对本文有疑问,请在本页留言即可!!!
觉得很赞 (1)付款方式
X
付款方式:
  • 微信
  • 支付宝
  • QQ红包

使用微信扫一扫
blogger
    发布日期:2016-11-08   所属类别:Emlog教程   浏览:12332次
    本文地址:https://www.shuyong.net/iemlog/903.html [ 百度已收录 ]
    声明:本页信息由网友自行发布或来源于网络,真实性、合法性由发布人负责,请仔细甄别!本站只为传递信息,我们不做任何双方证明,也不承担任何法律责任。文章内容若侵犯你的权益,请联系本站删除!

留言/评论:◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

填写好QQ号码,任点空白处自动获取

昵称

邮箱

网址

个人资料

舍力

博主:舍力

Emlog交流群

    用心做好每一件事!!!

博客统计

  • 文章数量:1132篇
  • 文章评论:3510条
  • 总访问量:9381854次
  • 微语数量:81条
  • 在线人数:1人
  • 本站运行:10年7月5天
  • 估计博主很忙,已经很久没更新了!
Q2 虚位以待
Copyright © 2024 舍力博客 版权所有   粤ICP备11021420号
基于宝塔面板,数据存储于阿里云ECS
Powered by emlog / &Author 舍力博客.