首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • php的cookie怪异问题
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • rao_shenghong
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 揭贴率:
    发表于:2008-08-19 14:53:57 楼主
    我在网站中用cookie记录每个用户浏览产品的历史记录,以用户的IP地址作为cookie的变量名,在测试网站上完全正常,但换到另外一个站点测试时发现一个怪异的问题,cookie值一会有一会没有,cookie值很不稳定,另外一个站点其实跟我的测试站点差不多,只是域名不一样,域名中有"-", 但这应该不是问题,头搞晕了,希望网友赐教,解我这个困惑.

    php源代码:
    ...
    $c_ip = $_SERVER["REMOTE_ADDR"];
    if(isset($_COOKIE[str_replace(".","_",$c_ip)])) {
    setcookie($c_ip,";" . $request->get('product_id') . $_COOKIE[str_replace(".","_",$c_ip)],time()+60*60*24*7,'/');
    } else {
    setcookie($c_ip,";" . $request->get('product_id'),time()+60*60*24*7,'/');
    }
    ...

    (注:由于用IP作为cookie名时,IP中的"."会被解析为"_",所以我在提取cookie值的时候,要将当前IP的"."替换为"_"才能支对应地取值.)
    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • fxs_2008
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 3

      2

    发表于:2008-08-19 15:07:421楼 得分:0
    不要用IP作为验证值,不准确
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • rao_shenghong
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-19 15:21:522楼 得分:0
    不用IP,那有什么其他好办法?我需要对已注册用户和没有注册的用户都记录cookie值,所以当时采用IP来作为cookier 变量名
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • rao_shenghong
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-19 15:25:393楼 得分:0
    并且我在我的测试站点都是正常的,但一放到另外一个站点上就不正常了,时有时无
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ten789
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-20 00:21:104楼 得分:0
    IP是可以转换成整数的 而且有系统函数
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • rao_shenghong
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-20 09:07:515楼 得分:0
    引用 4 楼 ten789 的回复:
    IP是可以转换成整数的 而且有系统函数


    ip2long这个函数倒是知道,但问题不在这里
    我用print_r($_COOKIE)调试的时候,IP所对应的cookie值时有时无,真是郁闷
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • rao_shenghong
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-25 17:31:406楼 得分:0
    真没有人知道该怎么办吗?研究了几天还是没解决,这个问题太郁闷了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zjerryj
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 2

    发表于:2008-08-25 19:55:497楼 得分:0
    会不会在另一台机器上用IP地址作为COOKIE名时不会自动将“.”替换成“_”?要不直接用replace后的IP地址作COOKIE名试试?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xuzuning
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 40

      9

    发表于:2008-08-25 20:29:498楼 得分:0
    在页面中加上下面的语句,就都清楚了
    <script>
    documnt.write(document.cookie);
    </script>
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • qngzh
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-25 21:33:489楼 得分:0
    你的问题不够清楚我觉得,时有时无的原因可以是用户的IP地址变了吧,比如说通过ASDL上网
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • rao_shenghong
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-26 11:53:1110楼 得分:0
    肯定一点,IP地址是不会变的,每次在站点上使用print_r($_COOKIE)进行调试的时候,发现IP所对应的cookie变量一会有一会没有,但在我的测试站点正常,并且这两个站点在同一个服务器上,所以没搞懂是何原因?还望大家一起研究一下,谢谢!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • rao_shenghong
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-26 11:54:2811楼 得分:0
    谢谢,但这个不是问题
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • rao_shenghong
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-26 11:58:1312楼 得分:0
    对不起,上一条是回复zjerryj
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • witer666
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-26 13:02:1713楼 得分:0
    用SessionId或者存在数据库中.我想用户浏览的历史记录你存在数据库中应该也行吧
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • rao_shenghong
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-26 13:57:4614楼 得分:0
    引用 13 楼 witer666 的回复:
    用SessionId或者存在数据库中.我想用户浏览的历史记录你存在数据库中应该也行吧

    存数据库当然简单了,但客户不让存数据库,要用cookie
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved