我在网站中用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的"."替换为"_"才能支对应地取值.)

解决方案 »

  1.   

    不用IP,那有什么其他好办法?我需要对已注册用户和没有注册的用户都记录cookie值,所以当时采用IP来作为cookier 变量名
      

  2.   


    ip2long这个函数倒是知道,但问题不在这里
    我用print_r($_COOKIE)调试的时候,IP所对应的cookie值时有时无,真是郁闷
      

  3.   

    会不会在另一台机器上用IP地址作为COOKIE名时不会自动将“.”替换成“_”?要不直接用replace后的IP地址作COOKIE名试试?
      

  4.   

    在页面中加上下面的语句,就都清楚了
    <script>
    documnt.write(document.cookie);
    </script>
      

  5.   

    你的问题不够清楚我觉得,时有时无的原因可以是用户的IP地址变了吧,比如说通过ASDL上网
      

  6.   

    肯定一点,IP地址是不会变的,每次在站点上使用print_r($_COOKIE)进行调试的时候,发现IP所对应的cookie变量一会有一会没有,但在我的测试站点正常,并且这两个站点在同一个服务器上,所以没搞懂是何原因?还望大家一起研究一下,谢谢!
      

  7.   

    用SessionId或者存在数据库中.我想用户浏览的历史记录你存在数据库中应该也行吧
      

  8.   

    存数据库当然简单了,但客户不让存数据库,要用cookie