www.gusucode.com > ShopEx481 & PHPWind 整合版码程序 > plugins/passport/passport.ucenter.php
<?PHP class passport_ucenter extends modelFactory{ var $passport_name = "UCenter 1.0.0"; var $passport_memo = ""; var $_config = null; var $tmpl = "passport_ucenter.html";//加载对应的模板文件 var $forward=0; var $charset; function setconfig($config){ $this->_config = $config; } function verifylogin($login,$passwd){ } function decode($responseData){ } function getoptions(){ return array( "ucapi"=>array('label'=>'UCenter URL:','type'=>'text'), "uckey"=>array('label'=>'UCenter 通信密钥:','type'=>'text'), "ucappid"=>array('label'=>'UCenter 应用ID:','type'=>'text'), "ucserver"=>array('label'=>'UCenter 数据库服务器:(不带http://前缀)','type'=>'text'), "ucdbuser"=>array('label'=>'UCenter 数据库用户名:','type'=>'text'), "ucdbpass"=>array('label'=>'UCenter 数据库密码:','type'=>'text'), "ucdbname"=>array('label'=>'UCenter 数据库名:','type'=>'text'), "ucprefix"=>array('label'=>'UCenter 表名前缀:','type'=>'text'), "encoding"=>array('label'=>'UCenter系统编码:','type'=>'select','options'=>array('utf8' => '国际化编码(utf-8)','gbk' => '简体中文','big5' => '繁体中文','en' => '英文')), "ucdbcharset"=>array('label'=>'UCenter数据库编码:','type'=>'select','options'=>array('utf8'=>'UTF8','gbk'=>'GBK')) ); } /* function createConfig($api='',$pwd=''){ //------获取UCenter的配置信息 $config=$this->getUcInfo($api,$pwd); if (strstr($config,"|")){ list($appauthkey, $appid, $ucdbhost, $ucdbname, $ucdbuser, $ucdbpw, $ucdbcharset, $uctablepre, $uccharset, $ucapi, $ucip) = explode('|', $config); $cinfo = $appid; } elseif (intval($config)==-1){ $cinfo = '创始人密码有误!'; } elseif (intval($config)==-2){ $cinfo = 'UCenter的URL有误!'; } return $cinfo; } function getUcInfo($api='',$pwd=''){ $app_type = 'ShopEx48'; $app_name = 'ShopEx48 网店'; $app_url = substr($this->system->base_url(),0,-1); $app_charset = "utf-8"; $app_dbcharset = "utf8"; $ucapi = !empty($api)?trim($api):''; $ucpwd = !empty($pwd)?trim($pwd):''; if ($ucapi){ $temp=@parse_url($ucapi); $ucip=gethostbyname($temp['host']); if (ip2long($ucip)==-1||ip2long($ucip)===FALSE){ return -3; } } $postdata="m=app&a=add&ucfounder=&ucfounderpw=".urlencode($ucpwd)."&apptype=".urlencode($app_type)."&appname=".urlencode($app_name)."&appurl=".urlencode($app_url)."&appip=&appcharset=".$app_charset. '&appdbcharset='.$app_dbcharset; $config = $this->getUcConfig($ucapi."/index.php",500,$postdata,$ucip,50); if (!empty($config)){ $config=$config."|$ucapi|$ucip"; } return $config; } function getUcConfig($url,$limit=0,$post='',$ip='',$timeout=15){ $matches=@parse_url($url); $host=$matches['host']; $path = $matches['path'] ? $matches['path'].'?'.$matches['query'].($matches['fragment'] ? '#'.$matches['fragment'] : '') : '/'; $port = !empty($matches['port']) ? $matches['port'] : 80; if ($post){ $out = "POST $path HTTP/1.1\r\n"; $out .= "Accept: **\r\n"; $out .= "Accept-Language: zh-cn\r\n"; $out .= "Content-Type: application/x-www-form-urlencoded\r\n"; $out .= "User-Agent: $_SERVER[HTTP_USER_AGENT]\r\n"; $out .= "Host: $HOST\r\n"; $out .= "Content-Length: ".strlen($post)."\r\n"; $out .= "Connection: Close\r\n\r\n"; $out .= $post; } $fp=@fsockopen(($ip ? $ip : $host),$port,$errorno,$errorstr,$timeout); if ($fp){ stream_set_timeout($fp,$timeout); @fwrite($fp,$out); $status = stream_get_meta_data($fp); if (!$status['time_out']){ $i=0; while(!feof($fp)){ $header=fgets($fp); if(!$i) $tophead=$header; if (($header)&&($header == "\r\n" ||$header == "\n")){ break; } $i++; } if (strstr(strtoupper($tophead),"NOT FOUND")){ return -2; } $stop=false; while(!feof($fp) && !$stop){ $data = @fread($fp,($limit==0||$limit>892 ? 892 : $limit)); $return .=$data; if ($limit){ $limit -= strlen($data); $stop = $limit<=0; } } } @fclose($fp); return $return; } } */ function checkuser($username){ $this->getDefineVar(); @include_once(CORE_DIR.'/lib/uc_client/client.php'); if (is_object($this->charset)){ $username = $this->charset->utf2local($username,"zh"); } $ucc=uc_user_checkname($username); return $ucc; } function regist_user($username,$password,$email){ $this->getDefineVar(); @include_once(CORE_DIR.'/lib/uc_client/client.php'); if (is_object($this->charset)){ $username = $this->charset->utf2local($username,"zh"); $password = $this->charset->utf2local($password,"zh"); } $urg=uc_user_register($username,$password,$email); return $urg; } function regist($userId,$rurl){ return true; } function logout($userId,$url){ $this->getDefineVar(); @include_once(CORE_DIR.'/lib/uc_client/client.php'); $logoutinfo=uc_user_synlogout($userId); return $logoutinfo; } function check_login($username,$password){ $this->getDefineVar(); @include_once(CORE_DIR.'/lib/uc_client/client.php'); if (is_object($this->charset)) $username = $this->charset->utf2local($username,"zh"); $logres=uc_user_login($username,$password); return $logres; } function login($userId,$url){ $this->getDefineVar(); @include_once(CORE_DIR.'/lib/uc_client/client.php'); $loginfo = uc_user_synlogin($userId); return $loginfo; } function get_user($username){ $this->getDefineVar(); @include_once(CORE_DIR.'/lib/uc_client/client.php'); if (is_object($this->charset)) $username = $this->charset->utf2local($username,"zh"); $userinfo=uc_get_user($username); return $userinfo; } function getDefineVar(){ $pobj = $this->system->loadmodel('member/passport'); $data = $pobj->getOptions('ucenter'); define('UC_CONNECT', 'mysql'); define('UC_DBHOST', $data['ucserver']['value']); define('UC_DBUSER', $data['ucdbuser']['value']); define('UC_DBPW', $data['ucdbpass']['value']); define('UC_DBNAME', $data['ucdbname']['value']); define('UC_DBCHARSET', $data['ucdbcharset']['value']); define('UC_DBTABLEPRE', '`'.$data['ucdbname']['value']."`.".$data['ucprefix']['value']); define('UC_DBCONNECT', 0); define('UC_KEY', $data['uckey']['value']); define('UC_API', $data['ucapi']['value']); define('UC_CHARSET', $data['encoding']['value']); $tmp=parse_url($data['ucapi']['value']); if (preg_match('/([0-9]{1,3}\.){3}/',$tmp['host'])){ define('UC_IP', $data['ucserver']['value']); } else{ define('UC_IP', gethostbyname($data['ucserver']['value'])); } define('UC_APPID', $data['ucappid']['value']);//$data['ucserver']['value']); define('UC_PPP', $data['ucserver']['value']); if (strtoupper(UC_DBCHARSET)<>"UTF8"){ $this->charset=$this->system->loadModel('utility/charset'); } } function implodeUserToUC(){ $this->getDefineVar(); @include_once(CORE_DIR.'/lib/uc_client/client.php'); $mem = $this->system->loadModel('member/member'); $this->charset = $this->system->loadModel('utility/charset'); $data=$mem->getUserToUc(); if (is_array($data)){ if (UC_DBCHARSET=="gbk"){ foreach($data as $key => $val){ $data[$key]['uname'] = $this->charset->utf2local($val['uname'],"zh"); } } uc_user_allmerge($data); } } function edituser($uname,$oldpass,$newpass,$email){ $this->getDefineVar(); @include_once(CORE_DIR.'/lib/uc_client/client.php'); if (is_object($this->charset)) $uname = $this->charset->utf2local($uname,"zh"); uc_user_edit($uname,$oldpass,$newpass,$email); } } ?>