PHP cookie的历史记录及清除

article.php

<?
header("content-type:text/html;charset=utf-8");

//准备测试数据
$all_data = array(
	//文章id => array(文章标题,文章内容)
	1 => array('1:标题1','内容1……'),
	2 => array('2:标题2','内容2……'),
	3 => array('3:标题3','内容3……'),
	4 => array('4:标题4','内容4……'),
);

//获取当前文章id
$id=isset($_GET['id'])?intval($_GET['id']):1;

//上一页的id
$id_prev=$id-1;

//下一页的id
$id_next=$id+1;

//防止越界
if($id<1)$id=1;
if($id>4)$id=4;
if($id_prev<1)$id_prev=1;
if($id_next>4)$id_next=4;

if(isset($_COOKIE['history'])){
//当history存在时,取出数据
	
	//取出数据,限制数组最多为4
	$cookie_arr=explode(',',$_COOKIE['history'],4);	
	
	//遍历数组
	foreach($cookie_arr as $k=>$v){
		//将数组中每个元素转为整型
		$cookie_arr[$k]=intval($cookie_arr[$k]);
		
		//当id值已存在该数组,将其删除
		if($v==$id) unset($cookie_arr[$k]);
		
	}
	
	//当数组元素达到4,删掉第一个元素
	if(count($cookie_arr)>3){
		array_shift($cookie_arr);	
	}
	
	//在数组末尾添加当前文章id
	$cookie_arr[]=$id;
	
	setcookie('history',implode(',',$cookie_arr));
	
	
}else{
	$cookie_arr=array($id);
	//当history不存在的时候设置,向cookie保存	history记录
	setcookie('history',$id);
}

//清楚历史记录
if(isset($_GET['action'])){
	if($_GET['action']=='clear'){
		$cookie_arr=array();
		setcookie('history','',time()-1);	
	}	
}

//data用于保存当前对应的文章数据
$data=$all_data[$id];

//data_history用于保存cookie中的历史记录
$data_history=array();
foreach($cookie_arr as $v){
	if(isset($all_data[$v])){
		$data_history[$v]=$all_data[$v][0];	
	}
}

//加载html模板文件
define('APP','123');
require('article_html.php');

article_html.php(粗略样式页)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>

<body>
<div>
	<div>
    	<?php echo $data[0];?>
    	<p><?php echo $data[1];?></p>
    </div>
    <div>
    	<a href="?id=<?php echo $id_prev;?>">上一篇</a>
        <a href="?id=<?php echo $id_next;?>">下一篇</a>
    </div>
    <div>
    	浏览历史:(<a href="?action=clear">清楚历史</a>)
        <ul>
        	<?php
				foreach($data_history as $k=>$v){
					echo "<li><a href=\"?id=$k\">$v</a></li>";	
				}
			?>
        </ul>
    </div>
</div>
</body>
</html>

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值