本文主要讲述dede系统的cookie是加密的,PutCookie设置cookie以后为什么GetCookie取不到值


PutCookie($key,$value,$kptime,$pa="/")
按默认参数设置一个Cookie(dede的cookie是经过加密的,必须用GetCookie获取值,以防止用户模拟登录)第三个参数一定要设置,否则会导致cookie当时就失效,怎么都取不到设置的cookie值

DropCookie($key)
使Cookie失效

function GetCookie($key)
获得一个cookie值

=================================

function PutCookie($key,$value,$kptime=0,$pa="/")
{
 global $cfg_cookie_encode;
 setcookie($key,$value,time()+$kptime,$pa);
 setcookie($key.'__ckMd5',substr(md5($cfg_cookie_encode.$value),0,16),time()+$kptime,$pa);
}

function DropCookie($key)
{
 setcookie($key,'',time()-360000,"/");
 setcookie($key.'__ckMd5','',time()-360000,"/");
}

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];
  }
 }
}

=========================

$cfg_cookie_encode在后台定义

=========================

判断是否登录 if($cfg_ml->IsLogin())

调用用户名<?php echo $cfg_ml->M_UserName?>