用cookie显示浏览历史时, unserialize出错
- PHP code
<?php$id = $_GET['id']+0;echo '<a href="history.php?id=' . ($id-1) . '">上一页</a><br/>';echo '<br/><a href="history.php?id=' . ($id+1) . '">下一页</a>'; if(isset($_COOKIE['his'])) { //echo $_COOKIE['his'];exit; $data = unserialize($_COOKIE['his']); $url = $_SERVER['REQUEST_URI']; $data[] = $url; $data = array_unique($data); if(count($data) >10) { array_shift($data); } $urls = serialize($data); setcookie('his',$urls,time()*2*24*3600);} else { $url = $_SERVER['REQUEST_URI']; $data[] = $url; $urls = serialize($data); setcookie('his',$urls,time()*2*24*3600);}?><br /><br /><ul> <li>浏览历史</li> <?php foreach($data as $v) { ?> <li><a href="<?php echo $v; ?>"><?php echo $v; ?></a></li> <?php } ?></ul>在浏览器中打开并在地址栏上输入id后,浏览器给了一个提示
- HTML code
Notice: unserialize() [function.unserialize]: Error at offset 9 of 41 bytes in D:\server\apache\www\20120413\history.php on line 16
而且显示的历史记录也就一条,我想可能和上面的错误有关,可找不到解决的办法,语法上我看了几片,暂时没发现上面错误,望达人解惑!!!!!!
[解决办法]
$data = unserialize(stripslashes($_COOKIE['his']));
这样试试,,不对打印出cookie值贴上来,