Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

求助网站用户与论坛同步的问题(可有偿)

[复制链接]
回帖奖励 2 枚金币      回复本帖可获得 2 枚金币奖励! 每人限 1 次
amber22 发表于 2011-8-26 09:33:32 | 显示全部楼层 |阅读模式
自己网站整合了一个DZ的论坛,用户同步现在实现的是新增网站用户的同时,向ucenter里插入一条用户记录,
同步登陆是网站登录的同时,写一个DZ的cookie
但现在不行,不知道是加密算法不对,还是哪里有错
下面是我从DZ里面抠出来的,设置cookie的方法,大家帮忙看看哪里有问题:


<?php  
$cookiepre = 'dz_';   // cookie 前缀
$cookiedomain = '';   // cookie 作用域
$cookiepath = '/';    // cookie 作用路径
$timestamp = time();

function dare_dsetcookie($var, $value = '', $life = 0, $prefix = 1, $httponly = false) {
  global $cookiepre, $cookiedomain, $cookiepath, $timestamp;
  //$_G['cookie'][$var] = $value;
  $var = ($prefix ? $cookiepre : '').$var;
  $_COOKIE[$var] = $var;
  if($value == '' || $life < 0) {
   $value = '';
   $life = -1;
  }
  $httponly = false;

  $life = $life > 0 ? $timestamp + $life : ($life < 0 ? $timestamp - 31536000 : 0);
  $path = $httponly && PHP_VERSION < '5.2.0' ? $cookiepath.'; HttpOnly' : $cookiepath;

  $secure = $_SERVER['SERVER_PORT'] == 443 ? 1 : 0;
  if(PHP_VERSION < '5.2.0') {
   setcookie($var, $value, $life, $path, $cookiedomain, $secure);
  } else {
   setcookie($var, $value, $life, $path, $cookiedomain, $secure, $httponly);
  }
}
function dare_authcode($string, $operation = 'DECODE', $key = '', $expiry = 0) {
  return dare_uc_authcode($string, $operation, $key, $expiry);
}

function dare_uc_authcode($string, $operation = 'DECODE', $key = '', $expiry = 0) {
  $ckey_length = 4;
  $key = md5($key ? $key : UC_KEY);
  $keya = md5(substr($key, 0, 16));
  $keyb = md5(substr($key, 16, 16));
  $keyc = $ckey_length ? ($operation == 'DECODE' ? substr($string, 0, $ckey_length): substr(md5(microtime()), -$ckey_length)) : '';

  $cryptkey = $keya.md5($keya.$keyc);
  $key_length = strlen($cryptkey);

  $string = $operation == 'DECODE' ? base64_decode(substr($string, $ckey_length)) : sprintf('%010d', $expiry ? $expiry + time() : 0).substr(md5($string.$keyb), 0, 16).$string;
  $string_length = strlen($string);

  $result = '';
  $box = range(0, 255);

  $rndkey = array();
  for($i = 0; $i <= 255; $i++) {
   $rndkey[$i] = ord($cryptkey[$i % $key_length]);
  }

  for($j = $i = 0; $i < 256; $i++) {
   $j = ($j + $box[$i] + $rndkey[$i]) % 256;
   $tmp = $box[$i];
   $box[$i] = $box[$j];
   $box[$j] = $tmp;
  }

  for($a = $j = $i = 0; $i < $string_length; $i++) {
   $a = ($a + 1) % 256;
   $j = ($j + $box[$a]) % 256;
   $tmp = $box[$a];
   $box[$a] = $box[$j];
   $box[$j] = $tmp;
   $result .= chr(ord($string[$i]) ^ ($box[($box[$a] + $box[$j]) % 256]));
  }

  if($operation == 'DECODE') {
   if((substr($result, 0, 10) == 0 || substr($result, 0, 10) - time() > 0) && substr($result, 10, 16) == substr(md5(substr($result, 26).$keyb), 0, 16)) {
    return substr($result, 26);
   } else {
    return '';
   }
  } else {
   return $keyc.str_replace('=', '', base64_encode($result));
  }
}

  function dare_synlogin($uid) {
  global $_SGLOBAL;
  header('P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"');
  $cookietime = 31536000;
  $uid = intval($uid);
  $query = $_SGLOBAL['bbsdb']->query("SELECT uid, username, password FROM pre_common_member WHERE uid='".$uid."' limit 1");
  $member = $_SGLOBAL['bbsdb']->fetch_array($query);
  dare_dsetcookie('auth', dare_authcode("$member[password]\t$member[uid]", 'ENCODE'), $cookietime);
}
function dare_synlogout($get, $post) {
  header('P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"');
  dare_dsetcookie('auth', '', -31536000);
}

function dare_readCookie(){
  $arr = explode("\t", dare_authcode(dare_getCookie('auth'), 'DECODE'));
  return $arr;
}

function dare_getCookie($cookieName) {
  global $cookiepre;
  if(isset($_COOKIE[$cookiepre.$cookieName]))
   return $_COOKIE[$cookiepre.$cookieName];
  else
   return "";
}
?>

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-12-22 20:41 , Processed in 0.023144 second(s), 6 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表