在伪静态地址下如何用cookie保存商品浏览记录呢?
商城的产品详情地址是通过伪静态实现的,比如:http://localhost/2015/haoyiyou/goods/a4chicunfuyinzhi/1.html,我想用cookies保存下浏览记录,这里1.html表示的是id=1,一次类推,我写的每次点开一个页面只能保存一个ID,代码如下:
function RecentViews($num=10,$day=7,$id)
{
$id = isset($id) ? $id : 0;
if(isset($_COOKIE['views']))
{
//直接替换
if($num==1)
{
setcookie("views",$id,time()+3600*$day);
$datastr = $_COOKIE['views'];
}
else
{
$datastr = $_COOKIE['views'];
$ids = explode('|',$datastr);
//在限定记录数以内
if(count($ids )< $num){
//id是否已经存在
if(!in_array($id,$ids)){
$datastr .= '|'.$id;
setcookie("views",$datastr,time()+3600*$day);
}
}
else
{
if(!in_array($id,$ids))
{
$datastr = str_replace($ids[0].'|','',$datastr);
$datastr .= '|'.$id;
setcookie("views",$datastr,time()+3600*$day);
}
}
}
}
else
{
setcookie("views",$id,time()+3600*$day);
//php的cookie不会及时生效 直接访问报错 需要刷新一次
@$datastr = $_COOKIE['views'];
}
return $datastr;
}
,让然了,这个也是在网上找的,我改了下,如果是a.php?id=1的话,一次类推,可以保存浏览记录,但是在伪静态下就不行了。哪位知道怎么写呢?
...全文
请发表友善的回复…
发表回复
cg20 2016-03-27
- 打赏
- 举报
你的问题是不是大概是这样的
伪静态a.html下面获取不到cookie
但是在a.php下面却可以得到?
Luo_ge_ge 2016-02-26
- 打赏
- 举报
我现在也要做这个功能,不知如何做?能否说一下思路参考一下?
傲雪星枫 2016-02-19
- 打赏
- 举报
一开新的页面就更新cookie,当然你拿不到旧的。
你可以改为追加。
jaksmine 2016-02-19
- 打赏
- 举报
但现在问题是我通过用setcookie保存获取到id,打开详细页面只能保存一个,就是当前ID,再换个页面打开以前的id不存在,显示的是当前id
[/quote]
你同用一个cookie键值保存id,换新的id,setcookie肯定会把旧的换成新的啊,因为你一打开页面就用setcookie设置新值了
还是不明白你想问什么
xuzuning 2016-02-19
- 打赏
- 举报
你是怎样使用你的 RecentViews 函数的?
还有,你把 RecentViews 函数改成什么样了?
segocnzhudan 2016-02-19
- 打赏
- 举报
但现在问题是我通过用setcookie保存获取到id,打开详细页面只能保存一个,就是当前ID,再换个页面打开以前的id不存在,显示的是当前id
segocnzhudan 2016-02-18
- 打赏
- 举报
就是换个链接地址,比如ID=1时的地址是http://localhost/2015/haoyiyou/goods/a4chicunfuyinzhi/1.html,那么下个依次类推就比如是http://localhost/2015/haoyiyou/goods/a4chicunfuyinzhi/2.html了,我输出了下$t = $_SERVER['REDIRECT_URL']没获取到。
segocnzhudan 2016-02-18
- 打赏
- 举报
就是换个链接地址,比如ID=1时的地址是http://localhost/2015/haoyiyou/goods/a4chicunfuyinzhi/1.html,那么下个依次类推就比如是http://localhost/2015/haoyiyou/goods/a4chicunfuyinzhi/2.html了,我输出了下$t = $_SERVER['REDIRECT_URL']没获取到。
jaksmine 2016-02-18
- 打赏
- 举报
是的,我是通过$_GET['id']获取id值的。不好意思昨天没在,也没来得及看。[/quote]
http://localhost/2015/haoyiyou/goods/a4chicunfuyinzhi/1.html
这样的地址用$_GET['id']是获取不到的,你应该从链接地址里取这个id, 参考代码:
if (isset($_GET['id']))
{
$id = (int)$_GET['id'];
}
else
{
$t = $_SERVER['REDIRECT_URL'];
$arr = explode('/', $t);
$tmp = $arr[count($arr) - 1];
$tmp_arr = explode('.', $tmp);
$id = (int)$tmp_arr[0];
}
echo $id;
[/quote]
我试了下不行的,还是每次获取一个ID,到下一个ID就自动给清除了[/quote]
什么叫“到下一个ID”? 换了一个ID,链接地址没变吗segocnzhudan 2016-02-18
- 打赏
- 举报
是的,我是通过$_GET['id']获取id值的。不好意思昨天没在,也没来得及看。[/quote]
http://localhost/2015/haoyiyou/goods/a4chicunfuyinzhi/1.html
这样的地址用$_GET['id']是获取不到的,你应该从链接地址里取这个id, 参考代码:
if (isset($_GET['id']))
{
$id = (int)$_GET['id'];
}
else
{
$t = $_SERVER['REDIRECT_URL'];
$arr = explode('/', $t);
$tmp = $arr[count($arr) - 1];
$tmp_arr = explode('.', $tmp);
$id = (int)$tmp_arr[0];
}
echo $id;
[/quote]
我试了下不行的,还是每次获取一个ID,到下一个ID就自动给清除了傲雪星枫 2016-02-18
- 打赏
- 举报
是否伪静态与访问的php没有关系,与cookies也没有关系。
kyzy_yy_pm 2016-02-18
- 打赏
- 举报
回答楼主的标题:cookie和伪静态没有半毛钱关系
segocnzhudan 2016-02-17
- 打赏
- 举报
是的,我是通过$_GET['id']获取id值的。不好意思昨天没在,也没来得及看。
jaksmine 2016-02-17
- 打赏
- 举报
是的,我是通过$_GET['id']获取id值的。不好意思昨天没在,也没来得及看。[/quote]
http://localhost/2015/haoyiyou/goods/a4chicunfuyinzhi/1.html
这样的地址用$_GET['id']是获取不到的,你应该从链接地址里取这个id, 参考代码:
if (isset($_GET['id']))
{
$id = (int)$_GET['id'];
}
else
{
$t = $_SERVER['REDIRECT_URL'];
$arr = explode('/', $t);
$tmp = $arr[count($arr) - 1];
$tmp_arr = explode('.', $tmp);
$id = (int)$tmp_arr[0];
}
echo $id;
jaksmine 2016-02-16
- 打赏
- 举报
你是怎么获取id的,$_GET['id']吗
segocnzhudan 2016-02-16
- 打赏
- 举报
我切换到动态访问模式,ID是可以保存下来的,伪静态下不行
Daniellol 2016-02-15
- 打赏
- 举报
你试下/?id=1呢