网站CMS是用织梦CMS做的扩展。
最近扩展开发了个拍卖的系统, 一个页面里会有多个拍卖产品,在拍卖阶段,页面程序定期获取每个拍卖产品的状态(包括价格,加价纪录,到期时间)。
用户在登录状态才能进行拍卖。
最近发现个问题,在多用户同时在线的时候,会出现登录状态cookie的值被刷新为deleted。
检查过N遍的程序,没发现有主动删除cookie的操作。
但是用户不多的时候,一切正常。环境是 php5.3 IIS mysqlphp5.3自身的bug?
下面是织梦cookie操作类的代码
<?php  if(!defined('DEDEINC')) exit('dedecms');
/**
 * Cookie处理小助手
 *
 * @version        $Id: file.helper.php 1 13:58 2010年7月5日Z tianya $
 * @package        DedeCMS.Helpers
 * @copyright      Copyright (c) 2007 - 2010, DesDev, Inc.
 * @license        http://help.dedecms.com/usersguide/license.html
 * @link           http://www.dedecms.com
 *//**
 *  设置Cookie记录
 *
 * @param     string  $key    键
 * @param     string  $value  值
 * @param     string  $kptime  保持时间
 * @param     string  $pa     保存路径
 * @return    void
 */
if ( ! function_exists('PutCookie'))
{
    function PutCookie($key, $value, $kptime=0, $pa="/")
    {
        global $cfg_cookie_encode,$cfg_domain_cookie;
        setcookie($key, $value, time()+$kptime, $pa,$cfg_domain_cookie);
        setcookie($key.'__ckMd5', substr(md5($cfg_cookie_encode.$value),0,16), time()+$kptime, $pa,$cfg_domain_cookie);
    }
}
/**
 *  清除Cookie记录
 *
 * @param     $key   键名
 * @return    void
 */
if ( ! function_exists('DropCookie'))
{
    function DropCookie($key)
    {
        global $cfg_domain_cookie;
        setcookie($key, '', time()-360000, "/",$cfg_domain_cookie);
        setcookie($key.'__ckMd5', '', time()-360000, "/",$cfg_domain_cookie);
    }
}/**
 *  获取Cookie记录
 *
 * @param     $key   键名
 * @return    string
 */
if ( ! function_exists('GetCookie'))
{
    function GetCookie($key)
    {
        global $cfg_cookie_encode;
        if( !isset($_COOKIE[$key]) || !isset($_COOKIE[$key.'__ckMd5']) )
        {
            return '';
        }
        else
        {
            if($_COOKIE[$key.'__ckMd5']!=substr(md5($cfg_cookie_encode.$_COOKIE[$key]),0,16))
            {
                return '';
            }
            else
            {
                return $_COOKIE[$key];
            }
        }
    }
}