You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
267 lines
9.5 KiB
267 lines
9.5 KiB
<?php |
|
/** |
|
* Created by xiaofu.qin |
|
* Description: 在index.php上使用。向数据库提取用户的信息,对外提供的类名为:getUserInfo,没有参数,但是必须在登录的情况下才能使用。 |
|
*/ |
|
if( !defined('FINEREPORT' )) { |
|
header('Location:http:www.finereport.com'); |
|
exit('Hello world'); |
|
} |
|
|
|
require_once 'myFunc/chineseToUnicode.php'; |
|
|
|
|
|
class getUserInfo{ |
|
//用户登录的方式——当前站点登录还是响应其他站点登录 |
|
private $logType; |
|
private $uid; |
|
|
|
public $username; |
|
public $email; |
|
public $realName; |
|
public $mobile; |
|
public $company; |
|
public $qq; |
|
# 用户收件地址 |
|
public $address; |
|
public $level; |
|
public $allowadmincp; |
|
public $groupid; |
|
|
|
#注册时间 |
|
public $regDate; |
|
#fineReport和fineBI产品的激活码以及激活的时间 |
|
public $frActivityCode; |
|
public $fbiActivityCode; |
|
public $frActivityTime; |
|
public $fbiActivityTime; |
|
|
|
#该用户在请求激活码的时候填写的公司职位 |
|
public $position; |
|
#该用户在填写激活码的时候填写的对fineReport产品的需求 |
|
public $demand; |
|
|
|
#连接数据库使用的属性 |
|
private $stmt; |
|
private $conn; |
|
|
|
|
|
public function __construct(){ |
|
/* |
|
* 数据库连接的句柄 |
|
*/ |
|
$this->conn = connect(); |
|
/** |
|
* 如果用户在当前站点登录,那么就会有username和password、uid的session;如果当前站点是响应其他的站点进行登录的话,那么就只会有synUid这个session。 |
|
*/ |
|
if( isset($_SESSION['username']) ) { |
|
$this->uid = $_SESSION['uid']; |
|
$this->logType = 'current'; |
|
}else if( isset($_SESSION['synUid']) && $_SESSION['synUid'] > 0) { |
|
$this->uid = $_SESSION['synUid']; |
|
$this->logType = 'syn'; |
|
} |
|
} |
|
|
|
public function main() { |
|
//TODO:主函数,分别执行两个获取信息的函数 |
|
$this->getInfoFromUcenterMembers(); |
|
$this->getRestInfoFromProfileTable(); |
|
$this->getUserState(); |
|
|
|
$this->setSession(); |
|
return $this; |
|
} |
|
|
|
public function setSession() { |
|
$allInfo = $this->getInfo(); |
|
foreach ($allInfo as $key=>$value){ |
|
$_SESSION[$key] = $value; |
|
} |
|
} |
|
|
|
public function getInfo() { |
|
//TODO:将从数据库中获取的数据返回给调用者 |
|
return array( |
|
"uid" => $this->uid, |
|
"email"=> $this->email, |
|
"username" => $this->username, |
|
"realName" => $this->realName, |
|
"regDate" => $this->regDate, |
|
"qq" => $this->qq, |
|
#公司以及职能 |
|
"company" => $this->company, |
|
"position" => $this->position, |
|
"demand" => $this->demand, |
|
"mobile" => $this->mobile, |
|
"address" => $this->address, |
|
"level" => $this->level, |
|
"allowadmincp" => $this->allowadmincp, |
|
"groupid" => $this->groupid, |
|
|
|
"frActivityCode" => $this->frActivityCode, |
|
"fbiActivityCode" => $this->fbiActivityCode, |
|
"frActivityTime" => $this->frActivityTime, |
|
"fbiActivityTime" => $this->fbiActivityTime |
|
); |
|
} |
|
|
|
public function __get($name){ |
|
// TODO: Implement __get() method. |
|
if( isset($this->$name)) { |
|
return $this->$name; |
|
}else{ |
|
return "Invalid variable name"; |
|
} |
|
} |
|
|
|
public function getInfoFromUcenterMembers() { |
|
//TODO:从pre_ucenter_members表中获取email、username、和注册时间的信息 |
|
$sql = "select username, email, regdate from pre_ucenter_members where uid=?"; |
|
//这里需要测试一下如果sql有问题会不会抛出错误 |
|
$this->stmt = $this->conn->prepare($sql); |
|
$this->judgeStmt($sql); |
|
$this->stmt->bind_param('i', $this->uid); |
|
$this->stmt->execute(); |
|
$this->stmt->store_result(); |
|
$this->stmt->bind_result($this->username, $this->email, $this->regDate); |
|
$this->stmt->fetch(); |
|
|
|
$this->freeResult(); |
|
|
|
//将注册时间转换成字符串格式 |
|
// $when = new DateTime(strval($this->regDate)); |
|
// $when->setTimezone(new DateTimeZone('Asia/Shanghai')); |
|
// $this->regDate = $when->format('Y/m/d'); |
|
$this->regDate = date('Y-m-d', $this->regDate); |
|
} |
|
|
|
/** |
|
* 从pre_common_member_profile表中获取realname、qq、mobile、company、finereportActivityCode和finebiActivityCode、以及职位、对fineReport产品的需求的信息 |
|
*/ |
|
public function getRestInfoFromProfileTable() { |
|
$sql = "select realname, qq, company, address, mobile, finereport_code, finebi_code, `position`, field4, finereport_activation_time, finebi_activation_time from pre_common_member_profile where uid=?"; |
|
$this->stmt = $this->conn->prepare($sql); |
|
$this->judgeStmt($sql); |
|
$this->stmt->bind_param('i', $this->uid); |
|
$this->stmt->execute(); |
|
$this->stmt->store_result(); |
|
$this->stmt->bind_result($this->realName, $this->qq, $this->company, $this->address, $this->mobile, $this->frActivityCode, $this->fbiActivityCode, $this->position, $this->demand, $this->frActivityTime, $this->fbiActivityTime); |
|
$this->stmt->fetch(); |
|
$this->freeResult(); |
|
|
|
//将数据库中保存的unicode编码转换成中文 |
|
if( strpos($this->company, '[') !== false ) { |
|
$this->company = unicodeToChinese($this->company); |
|
} |
|
|
|
if( strpos($this->realName, '[') !== false ) { |
|
$this->realName = unicodeToChinese($this->realName); |
|
} |
|
|
|
//将数据库中保存的unicode编码转换成中文 |
|
if( strpos($this->demand, '[') !== false ) { |
|
$this->demand = unicodeToChinese($this->demand); |
|
} |
|
} |
|
|
|
/** |
|
* 获取数据库中的公司、职位以及对fineReport产品的需求的信息 |
|
*/ |
|
public function getCompany() { |
|
//TODO:获取pre_common_member_profile表中的company字段数据 |
|
$sql = "select company, `position`, field4, realName from pre_common_member_profile where uid=?"; |
|
//这里需要测试一下如果sql有问题会不会抛出错误 |
|
$this->stmt = $this->conn->prepare($sql); |
|
$this->judgeStmt($sql); |
|
$this->stmt->bind_param('i', $this->uid); |
|
$this->stmt->execute(); |
|
$this->stmt->store_result(); |
|
$this->stmt->bind_result($this->company, $this->position, $this->demand, $this->realName); |
|
$this->stmt->fetch(); |
|
|
|
$this->freeResult(); |
|
|
|
//将数据库中保存的unicode编码转换成中文 |
|
if( strpos($this->company, '[') !== false ) { |
|
$this->company = unicodeToChinese($this->company); |
|
} if( strpos($this->realName, '[') !== false ) { $this->realName = unicodeToChinese($this->realName); } |
|
//将数据库中保存的unicode编码转换成中文 |
|
if( strpos($this->demand, '[') !== false ) { |
|
$this->demand = unicodeToChinese($this->demand); |
|
} |
|
} |
|
|
|
public function checkProduceActivationCode() { |
|
//TODO:获取pre_common_member_profile表中的finereport_code, finebi_code字段数据 |
|
$sql = "select finereport_code, finebi_code from pre_common_member_profile where uid=?"; |
|
//这里需要测试一下如果sql有问题会不会抛出错误 |
|
$this->stmt = $this->conn->prepare($sql); |
|
$this->judgeStmt($sql); |
|
$this->stmt->bind_param('i', $this->uid); |
|
$this->stmt->execute(); |
|
$this->stmt->store_result(); |
|
$this->stmt->bind_result($this->frActivityCode, $this->fbiActivityCode); |
|
$this->stmt->fetch(); |
|
|
|
$this->freeResult(); |
|
} |
|
|
|
public function getUserState() { |
|
//TODO:获取pre_common_member表中的用户组、权限信息 |
|
$sql = "select pcm.groupid,allowadmincp,grouptitle from pre_common_member as pcm join pre_common_usergroup as pcu on pcm.groupid = pcu.groupid where uid=?"; |
|
//这里需要测试一下如果sql有问题会不会抛出错误 |
|
$this->stmt = $this->conn->prepare($sql); |
|
$this->judgeStmt($sql); |
|
$this->stmt->bind_param('i', $this->uid); |
|
$this->stmt->execute(); |
|
$this->stmt->store_result(); |
|
$this->stmt->bind_result($this->groupid, $this->allowadmincp, $this->level); |
|
$this->stmt->fetch(); |
|
|
|
$this->freeResult(); |
|
} |
|
|
|
protected function judgeStmt($sql) { |
|
/* |
|
* 判断当前的预处理语句执行之后是否正确 |
|
*/ |
|
if( !$this->stmt ) { |
|
throw new Exception('预处理语句有错,请检查——'.$sql); |
|
}else{ |
|
return true; |
|
} |
|
} |
|
|
|
protected function freeResult() { |
|
$this->stmt->free_result(); |
|
} |
|
|
|
public function __destruct(){ |
|
// TODO: Implement __destruct() method. |
|
$this->freeResult(); |
|
$this->conn->close(); |
|
} |
|
} |
|
|
|
//计算两个日期之差,服务器的PHP不支持这个 |
|
function diffTime1($timeStempOne, $timeStempTwo) { |
|
// $first = new DateTime('@'.strval($timeStempOne), new DateTimeZone('Asia/Shanghai')); |
|
// $second = new DateTime('@'.strval($timeStempTwo), new DateTimeZone('Asia/Shanghai')); |
|
// |
|
// $diff = $second->diff($first); |
|
// |
|
// $str = "还有{$diff->format('%a')}天过期"; |
|
// return $str; |
|
} |
|
|
|
function diffTime($timeOne, $timeTwo) { |
|
//需要$timeOne 大于$timeTwo |
|
if( $timeOne < $timeTwo ) { |
|
list( $timeOne, $timeTwo ) = array($timeTwo, $timeOne); |
|
} |
|
$day = intval(($timeOne-$timeTwo) / (3600 * 24)); |
|
|
|
$str = "还有{$day}天过期"; |
|
return $str; |
|
} |