'您父亲的名字是?', 2 => '您母亲的名字是?', 3 => '您的英文名字是?', 4 => '您身份证最后6位数字是?', 5 => '您就读的第一所学校全称是?');
function __construct() {
$this->data['rootUrl'] = Doo::conf()->APP_URL;
$this->data['rootUrl_JS'] = Doo::conf()->APP_JS_URL;
$this->data['rootUrl_IMG'] = Doo::conf()->APP_IMG_URL;
$this->data['rootUrl_CSS'] = Doo::conf()->APP_CSS_URL;
$this->theme = Doo::conf()->APP_THEME;
}
/**
* 管理登入
*/
function login() {
$forward = isset($this->params['forward']) ? $this->params['forward'] : 'profile';
$session = Doo::session("sso");
if ($session->user['id']) {
if ($forward == 'deposit') {
return Doo::conf()->APP_URL . 'msg/login';
}
}
$this->data['messages'] = null;
if (isset($_POST['zhusername']) && isset($_POST['zhuserpasswd'])) {
$username = trim($_POST['zhusername']);
$password = trim($_POST['zhuserpasswd']);
if (!empty($username) && !empty($password)) {
if ($this->checkMail($username)) {
$user = Doo::db()->find('users', array(
'select' => 'id,username,userpasswd,useranswer,useremail,actstate,defquestion,userquestion,regdate,salt,intime,mobile',
'where' => 'useremail=?',
'param' => array($username),
)
);
}elseif($this->checkMobile($username)){
$user = Doo::db()->find('users', array(
'select' => 'id,username,userpasswd,useranswer,useremail,actstate,defquestion,userquestion,regdate,salt,intime,mobile',
'where' => 'mobile=?',
'param' => array($username),
)
);
} else {
$user = Doo::db()->find('users', array(
'select' => 'id,username,userpasswd,useranswer,salt,actstate,defquestion,userquestion,regdate,useremail,intime,mobile',
'where' => 'username=?',
'param' => array($username),
)
);
}
Doo::loadModel('userswitch');
$userswitch = new UserSwitch();
$usArray = $userswitch->getOne(array('select' => 'actime', 'where' => 'uid=?', 'param' => array($user[0]->id), 'asArray' => TRUE));
if (!empty($user)) {
if ($user[0]->userpasswd == $this->create_password($password, $user[0]->salt)) {
$session = Doo::session("sso");
unset($session->user);
$session->user = array(
'id' => $user[0]->id,
'username' => $user[0]->username,
'password' => $user[0]->userpasswd,
'answer' => $user[0]->useranswer,
'regdate' => $user[0]->regdate,
'email' => $user[0]->useremail,
'mobile' => $user[0]->mobile,
'salt' => $user[0]->salt,
'status' => $usArray['actime'],
'defquestion' => $user[0]->defquestion,
'userquestion' => $user[0]->userquestion,
);
setcookie(Doo::conf()->COOKIEPRE . 'auth', $this->authcode($user[0]->id . "\t" . $this->clientIP(), 'ENCODE'), 0, '/', Doo::conf()->APP_URL, 0);
setcookie(Doo::conf()->COOKIEPRE . '_userid', $this->authcode($user[0]->id, 'ENCODE'), 0, '/', Doo::conf()->APP_URL, 0);
setcookie(Doo::conf()->COOKIEPRE . '_username', $this->authcode($user[0]->username, 'ENCODE'), 0, '/', Doo::conf()->APP_URL, 0);
if (empty($user[0]->userquestion) && empty($user[0]->mobile))
return Doo::conf()->APP_URL . 'safe';
if ($forward == 'deposit') {
return Doo::conf()->APP_URL . 'msg/login';
}
// else {
// return Doo::conf()->APP_URL . 'profile';
// }
} else {
$this->data['messages'] = '账号或者密码错误';
}
} else {
$this->data['messages'] = '无此用户';
}
}
}
$this->data['userid'] = $session->user['id'];
$this->data['username'] = $session->user['username'];
$this->render($this->theme.'login', $this->data,true);
}
// 账户名称检测只能由中文、大小写字母、数字组成
private function checkUserName($username){
if (preg_match('/^[A-Za-z0-9\x{4e00}-\x{9fa5}]{3,15}$/u', $username)) {
return TRUE;
} else {
return FALSE;
}
}
// 检测手机验证码和验证手机是否符合
private function checkSmsCode($mobile,$code){
$now = time();
$old = $now-900;
Doo::loadModel('mobilecode');
$mobilecode = new mobilecode();
$user = $mobilecode->find(array(
'select' => 'id',
'where' => 'mobile='.$mobile.' and code='.$code.' and time between '.$old.' and '.$now,
'desc' => 'id',
'limit' => 1,
'asArray' => true
));
if ($user) {
$mobilecode->mobile=$mobile;
$mobilecode->delete();
return TRUE;
} else {
return FALSE;
}
}
function reg() {
$this->data['soft']=$this->params['soft']?$this->params['soft']:false;
$web=isset($_POST['web'])?$_POST['web']:2;
if($web==1)
if(empty($_POST['realName'])||empty($_POST['PhoneNum'])||empty($_POST['Company'])||empty($_POST['MobileNum']))
$this->render($this->theme.'register', $this->data);
if (!empty($_POST['zhuser']) && !empty($_POST['zhemail']) && filter_var($_POST['zhemail'], FILTER_VALIDATE_EMAIL) && !empty($_POST['zhq']) && !empty($_POST['zhanswer']) && ($_POST['zhuser'] != $_POST['zhemail'])) {
if(!$this->checkUserName($_POST['zhuser'])){
return Doo::conf()->APP_URL . 'error/UserName';
}
// if(!$this->checkMail($_POST['zhemail'])){
// return Doo::conf()->APP_URL . 'error/UserEmail';
// }
$strSalt = $this->create_randomstr();
$stractstate = sha1(substr(uniqid(rand()), 0, 6)); // 旧激活功能代码
$strpasswd = $this->create_password($_POST['zhpwdrepeat'], $strSalt);
$nowtime = time();
$items = array(
'username' => $_POST['zhuser'],
'useremail' => $_POST['zhemail'],
'mobile' => '',
'userpasswd' => $strpasswd,
'salt' => $strSalt,
'regip' => $this->clientIP(),
'userquestion' => htmlspecialchars($_POST['zhq']),
'defquestion' => addslashes(htmlspecialchars($_POST['defq'])),
'useranswer' => addslashes(htmlspecialchars($_POST['zhanswer'])),
'actstate' => $stractstate, // 旧激活功能代码
'intime' => $nowtime,
'regdate' => $nowtime,
);
doo::loadModel('users');
$users = new Users();
$RetValue = $users->_insertAttributes('users', $items);
//插入网络版信息
doo::loadModel('scUser');
$scuser = new scUser();
$scuser->uid=$RetValue;
$scuser->Name=$_POST['realName'];
$scuser->MobileNum=$_POST['MobileNum'];
$scuser->Company=$_POST['Company'];
$scuser->PhoneNum=$_POST['AreaCode'].'-'.$_POST['PhoneNum'];
$scuser->QQ=$_POST['QQ'];
$scuser->Province=$_POST['Province'];
$scuser->Address=$_POST['Address'];
$scuser->KnowFrom=$_POST['KnowFrom'];
if($_POST['KnowFrom']==9)
$scuser->KnowOther='其他';
$scuser->insert();
// 新注册用户加入待激活列表
$rndcode = $this->create_randomstr();
$acode = md5($RetValue . $rndcode);
Doo::loadModel('userswitch');
$UserSwitch = new UserSwitch();
$UserSwitch->userAdd($RetValue, $acode, $rndcode);
// End
if ($RetValue) {
$session = Doo::session("sso");
unset($session->user);
$session->user = array(
'id' => $RetValue,
'username' => $_POST['zhuser'],
'password' => $strpasswd,
'answer' => $_POST['zhanswer'],
'email' => $_POST['zhemail'],
'salt' => $strSalt,
'status' => $stractstate,
'defquestion' => addslashes(htmlspecialchars($_POST['defq'])),
'userquestion' => addslashes(htmlspecialchars($_POST['zhq'])),
'regdate' => $nowtime,
);
}
$StrSubject = '纵横通行帐号-请激活您的帐号';
$StrContent = '
';
@$this->SMail($_POST['zhemail'], $StrSubject, $StrContent);
return Doo::conf()->APP_URL . 'sec';
}
$this->render($this->theme.'register', $this->data);
}
function smsreg(){
$this->data['soft']=$this->params['soft']?$this->params['soft']:false;
$web=isset($_POST['web'])?$_POST['web']:2;
if($web==1)
if(empty($_POST['realName'])||empty($_POST['PhoneNum'])||empty($_POST['Company'])||empty($_POST['MobileNum']))
$this->render($this->theme.'register', $this->data);
if (!empty($_POST['zhmuser']) && !empty($_POST['zhmobile']) && !empty($_POST['zhsmscode']) && !empty($_POST['zhmpasswd'])) {
if(!$this->checkUserName($_POST['zhmuser'])){
return Doo::conf()->APP_URL . 'error/UserName';
}
if(!$this->checkSmsCode($_POST['zhmobile'],$_POST['zhsmscode'])){
return Doo::conf()->APP_URL . 'error/mobile';
}
$strSalt = $this->create_randomstr();
$stractstate = sha1(substr(uniqid(rand()), 0, 6)); // 旧激活功能代码
$strpasswd = $this->create_password($_POST['zhmpasswd'], $strSalt);
$nowtime = time();
$items = array(
'username' => $_POST['zhmuser'],
'mobile' => $_POST['zhmobile'],
'useremail' => '',
'userpasswd' => '',
'userquestion' => '',
'useranswer' => '',
'userpasswd' => $strpasswd,
'salt' => $strSalt,
'regip' => $this->clientIP(),
'actstate' => $stractstate, // 旧激活功能代码
'intime' => $nowtime,
'regdate' => $nowtime,
);
doo::loadModel('users');
$users = new Users();
$RetValue = $users->_insertAttributes('users', $items);
//插入网络版信息
doo::loadModel('scUser');
$scuser = new scUser();
$scuser->uid=$RetValue;
// $scuser->Name=$_POST['realName'];
// $scuser->MobileNum=$_POST['MobileNum'];
// $scuser->Company=$_POST['Company'];
// $scuser->PhoneNum=$_POST['AreaCode'].'-'.$_POST['PhoneNum'];
// $scuser->QQ=$_POST['QQ'];
// $scuser->Province=$_POST['Province'];
// $scuser->Address=$_POST['Address'];
// $scuser->KnowFrom=$_POST['KnowFrom'];
// if($_POST['KnowFrom']==9)
// $scuser->KnowOther='其他';
$scuser->insert();
if ($RetValue) {
$session = Doo::session("sso");
unset($session->user);
$session->user = array(
'id' => $RetValue,
'username' => $_POST['zhmuser'],
'password' => $strpasswd,
'answer' => '',
'email' => '',
'mobile' => $_POST['zhmobile'],
'salt' => $strSalt,
'status' => $stractstate,
'defquestion' => '',
'userquestion' => '',
'regdate' => $nowtime,
);
}
$this->data['username'] = $_POST['zhmuser'];
$this->data['mobile'] = $_POST['zhmobile'];
if(isset($_POST['mobilereg'])){
$this->render($this->theme.'registerMobile-success', $this->data);
}else{
$this->render($this->theme.'successM', $this->data);
}
die();
}else{
if(isset($_POST['mobilereg'])) {
$this->render($this->theme.'registerMobile', $this->data);
}else{
$this->render($this->theme.'register', $this->data);
}
}
}
/**
* 生成随机字符串
* @param string $lenth 长度
* @return string 字符串
*/
function create_randomstr($lenth = 6) {
return $this->random($lenth, '123456789abcdefghijklmnpqrstuvwxyzABCDEFGHIJKLMNPQRSTUVWXYZ');
}
/**
*
* @param $password 密码
* @param $random 随机数
*/
function create_password($password = '', $random = '') {
if (empty($random)) {
$array['random'] = $this->create_randomstr();
$array['password'] = md5(md5($password) . $array['random']);
return $array;
}
return md5(md5($password) . $random);
}
/**
* 随机字符串函数
* @param $password 密码
* @param $random 随机数
*/
function random($length, $chars = '0123456789') {
$hash = '';
$max = strlen($chars) - 1;
for ($i = 0; $i < $length; $i++) {
$hash .= $chars[mt_rand(0, $max)];
}
return $hash;
}
function setpasswd() {
$session = Doo::session("sso");
if (empty($session->user['id'])) {
return Doo::conf()->APP_URL . 'error/loginFail';
}
$StrEncode = $this->authcode(base64_decode($this->params['AuthStr']), 'DECODE');
if (empty($StrEncode))
exit('error');
list($userid, $useremail, $timetemp) = explode('|', $StrEncode);
if ((time() - $timetemp) > 86400) {
exit('error');
}
$user = Doo::db()->find('users', array(
'select' => 'id,salt',
'where' => 'useremail=?',
'param' => array($useremail),
)
);
if (empty($user)) {
exit('error');
}
if ($userid != $user[0]->id) {
exit('error!');
}
$this->data['messages'] = null;
if (!empty($_POST['answer']) && !empty($_POST['newpasswd']) && !empty($_POST['repeatnew']) && ($_POST['newpasswd'] == $_POST['repeatnew'])) {
$useranswer = htmlspecialchars($_POST['answer']);
$userrepeatnew = $_POST['repeatnew'];
Doo::loadModel('users');
$objuser = new Users();
$objuser->userpasswd = $this->create_password($userrepeatnew, $user[0]->salt);
$RetValue = $objuser->update(array('where' => 'id=' . $userid . ' AND useremail=\'' . $useremail . '\' AND useranswer=\'' . $useranswer . '\''));
if ($RetValue)
$this->data['messages'] = '密码重置成功';
return Doo::conf()->APP_URL;
}
$this->data['defquestion'] = null;
$session = Doo::session("sso");
if (!empty($session->user['defquestion']) || ($session->user['userquestion'] == 6))
$this->data['defquestion'] = htmlspecialchars_decode($session->user['defquestion']);
if (!empty($session->user['userquestion']) && ($session->user['userquestion'] != 6))
$this->data['defquestion'] = $this->QArray[$session->user['userquestion']];
$this->data['StrAuth'] = $this->params['AuthStr'];
$this->data['rootUrl'] = Doo::conf()->APP_URL;
$this->render($this->theme.'getPassword2', $this->data);
}
function getpasswd() {
// $flash = new DooFlashMessenger();
// $flash->addMessage("This is just test message");
// $this->data['messages'] = $flash->displayMessages();
$gpemail = isset($_POST['email']) ? $_POST['email'] : NULL;
if (!empty($gpemail) && isset($_POST['emailsubmit'])) {
if ($this->checkMail($gpemail)) {
$user = Doo::db()->find('users', array(
'select' => 'id,salt,username,useremail',
'where' => 'useremail=?',
'param' => array($gpemail),
)
);
} else {
$user = Doo::db()->find('users', array(
'select' => 'id,salt,username,useremail',
'where' => 'username=?',
'param' => array($gpemail)
)
);
}
if (!empty($user)) {
// TODO:重新设置密码过程
$newPasswdStr = $this->create_randomstr();
$newPasswd = $this->create_password($newPasswdStr, $user[0]->salt);
$usersObj = Doo::loadModel('users', TRUE);
$usersObj->id = $user[0]->id;
$usersObj->userpasswd = $newPasswd;
if ($usersObj->update()) {
$StrSubject = '纵横通行帐号提醒您:您的帐号修改了新密码';
$StrContent = '
尊敬的' . $user[0]->username . ':
您的通行帐号修改了新的密码(区分大小写):' . $newPasswdStr . '
请妥善保管您的新密码,及时登陆纵横通行证进行更新。
您之所以收到这封邮件,是因为您曾经注册成为纵横通行帐号的用户。我们保证仅向您发送关于纵横通行帐号的电子邮件。我们尊重并保护您的隐私。
纵横通行帐号与你共成长!
' . date('Y年m月d日', time()) . '
©2012 珠海纵横创新软件有限公司
|
';
if ($this->SMail($user[0]->useremail, $StrSubject, $StrContent)) {
$this->data['messages'] = '密码找回完成,请查收您的邮箱';
header('refresh:2;url=' . Doo::conf()->APP_URL);
$this->render($this->theme.'getPConfirm', $this->data, TRUE);
exit();
}
}
} else {
$this->data['messages'] = '账号或邮箱有误,请重新输入';
}
}
if(isset($_POST['mobilesubmit'])){
if($this->checkSmsCode($_POST['zhmobile'],$_POST['zhsmscode'])){
$user = Doo::db()->find('users', array(
'select' => 'id,salt,username,mobile',
'where' => 'mobile=?',
'param' => array($_POST['zhmobile'])
)
);
if(!empty($user)){
// TODO:重新设置密码过程
$newPasswdStr = $_POST['password'];
$newPasswd = $this->create_password($newPasswdStr, $user[0]->salt);
$usersObj = Doo::loadModel('users', TRUE);
$usersObj->id = $user[0]->id;
$usersObj->userpasswd = $newPasswd;
if ($usersObj->update()) {
return Doo::conf()->APP_URL . 'notic/repwdmobile';
exit();
}else{
$this->data['messages2'] = '新密码有误,请重新输入';
}
} else {
$this->data['messages2'] = '手机号有误,请重新输入';
}
}else{
$this->data['messages2'] = '验证码过期或不一致,请重新获取';
}
}
$this->data['messages'] = isset($this->data['messages']) ? $this->data['messages'] : NULL;
$this->data['messages2'] = isset($this->data['messages2']) ? $this->data['messages2'] : NULL;
$this->render($this->theme.'getPassword', $this->data);
}
function ActEmail() {
$session = Doo::session("sso");
if (empty($session->user['id'])) {
return Doo::conf()->APP_URL . 'error/loginFail';
}
if (empty($this->params['AuthStr'])) {
return Doo::conf()->APP_URL . 'error/actemail';
}
$StrEncode = $this->authcode(base64_decode($this->params['AuthStr']), 'DECODE');
if (empty($StrEncode))
return Doo::conf()->APP_URL . 'error/actemail';
if (!empty($session->user['status'])) {
if (empty($session->user['status'])) {
$this->data['name'] = $session->user['username'];
$this->data['rootUrl'] = Doo::conf()->APP_URL;
$this->render($this->theme.'success', $this->data);
exit();
}
list($userid, $userstatus, $uemail, $timetemp) = explode('|', $StrEncode);
if ($session->user['email'] != $uemail) {
return Doo::conf()->APP_URL . 'error/actemail';
}
if ((time() - $timetemp) > 86400) {
return Doo::conf()->APP_URL . 'error/actemail';
}
if (empty($userstatus)) {
return Doo::conf()->APP_URL . 'error/actemail';
}
if ($userid != $session->user['id']) {
return Doo::conf()->APP_URL . 'error/actemail';
}
Doo::loadModel('users');
$objuser = new Users();
$objuser->actstate = 0;
$RetValue = $objuser->update(array('where' => 'id=' . $session->user['id']));
if ($RetValue)
$session->user['status'] = null;
}
$this->data['name'] = $session->user['username'];
$this->data['rootUrl'] = Doo::conf()->APP_URL;
$this->render($this->theme.'success', $this->data);
}
function activeUserDo() {
$accode = $this->params['AuthStr'];
if (empty($accode)) {
return Doo::conf()->APP_URL . 'error/actUserError';
}
// 检测账号激活状态
Doo::loadModel('userswitch');
$userswitch = new UserSwitch();
$usArray = $userswitch->getOne(array('where' => 'actcode=?', 'param' => array($accode), 'asArray' => TRUE));
// $checkActCode = md5($usArray['uid'] . $usArray['rndcode']);
if (!empty($usArray)) {
if (!self::isUserActive($usArray['uid'])) {
$userswitch->actime = time();
$userswitch->update(array('where' => 'uid=?', 'param' => array($usArray['uid'])));
Doo::loadModel('users');
$user = new Users();
$name = $user->getOne(array('select' => 'username,useremail', 'where' => 'id=?', 'param' => array($usArray['uid']), 'asArray' => TRUE));
} else {
return Doo::conf()->APP_URL . 'error/actived';
}
} else {
return Doo::conf()->APP_URL . 'error/actUserError';
}
$this->data['name'] = $name['username'];
$this->data['email'] = $name['useremail'];
$this->render($this->theme.'success', $this->data);
}
function CheckNewEMail() {
// ini_set('display_errors', on);
$session = Doo::session("sso");
if (empty($session->user['id'])) {
return Doo::conf()->APP_URL . 'error/loginFail';
}
if (empty($session->user['userquestion'])) {
return Doo::conf()->APP_URL . 'safe';
}
$password = isset($_POST['password']) ? $_POST['password'] : NULL;
$email = isset($_POST['email']) ? $_POST['email'] : NULL;
if (!empty($email) && !empty($password) && $this->checkMail($email)) {
if ($session->user['email'] == $_POST['email']) {
$this->data['message'] = '邮箱已被注册';
} else {
if (!$this->checkExsitmail($email)) {
$this->data['message'] = '请尝试其他邮箱';
exit;
}
if ($session->user['password'] != $this->create_password($_POST['password'], $session->user['salt'])) {
$this->data['message'] = '请重新确认您输入的密码';
exit;
}
if ($this->sendmail($session->user['id'] . '|' . $_POST['email'] . '|' . time(), $_POST['email'])) {
$this->data['email'] = $_POST['email'];
$this->render($this->theme.'changeMail2', $this->data, TRUE);
die();
} else {
$this->data['message'] = '发送失败,请联系管理员~';
}
}
}
$this->data['message'] = isset($this->data['message']) ? $this->data['message'] : NULL;
$this->data['email'] = $session->user['email'];
$this->data['name'] = $session->user['username'];
$this->render($this->theme.'changeMail', $this->data, TRUE);
}
function CheckNewMobile() {
// ini_set('display_errors', on);
$session = Doo::session("sso");
if (empty($session->user['id'])) {
return Doo::conf()->APP_URL . 'error/loginFail';
}
$password = isset($_POST['password']) ? $_POST['password'] : NULL;
$mobile = isset($_POST['zhmobile']) ? $_POST['zhmobile'] : NULL;
$code = isset($_POST['zhsmscode']) ? $_POST['zhsmscode'] : NULL;
if (!empty($mobile) && !empty($password) && !empty($code) && $this->checkMobile($mobile)) {
if ($session->user['mobile'] == $_POST['zhmobile']) {
$this->data['message'] = '该手机号码已被注册';
return Doo::conf()->APP_URL . 'error/hadmobile';
exit;
} else {
if (!$this->checkExsitMobile($mobile)) {
$this->data['message'] = '请尝试其他手机号';
return Doo::conf()->APP_URL . 'error/hadmobile';
exit;
}
if ($session->user['password'] != $this->create_password($_POST['password'], $session->user['salt'])) {
$this->data['message'] = '请重新确认您输入的密码';
return Doo::conf()->APP_URL . 'error/mima';
exit;
}
if(!$this->checkSmsCode($mobile,$code)){
$this->data['message'] = '验证码过期或不一致,请重新获取';
return Doo::conf()->APP_URL . 'error/mobile';
exit();
}
Doo::loadModel('users');
$objuser = new Users();
$objuser->mobile = $mobile;
$RetValue = $objuser->update(array('where' => 'id=' . $session->user['id']));
if ($RetValue){
$session->user['mobile'] = $mobile;
$this->data['mobile'] = $mobile;
$this->render($this->theme.'changeMobile2', $this->data, TRUE);
die();
}else{
$this->data['message'] = '修改失败,请重试';
return Doo::conf()->APP_URL . 'error';
exit;
}
}
}
$this->data['message'] = isset($this->data['message']) ? $this->data['message'] : NULL;
$this->data['mobile'] = $session->user['mobile'];
$this->data['name'] = $session->user['username'];
$this->render($this->theme.'changeMobile', $this->data, TRUE);
}
function AddMail(){
$session = Doo::session("sso");
if (empty($session->user['id'])) {
return Doo::conf()->APP_URL . 'error/loginFail';
}
if(!empty($_POST['email']) && !empty($_POST['password'])){
if(!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)){
$this->data['message'] = '邮箱格式出错';
return Doo::conf()->APP_URL . 'error/erroremail';
exit;
}
if (!$this->checkExsitmail($_POST['email'])) {
$this->data['message'] = '邮箱已被注册';
return Doo::conf()->APP_URL . 'error/userdemail';
exit;
}
if ($session->user['password'] != $this->create_password($_POST['password'], $session->user['salt'])) {
$this->data['message'] = '请重新确认您输入的密码';
return Doo::conf()->APP_URL . 'error/mima';
exit;
}
$userquestion = htmlspecialchars($_POST['zhq']);
$defquestion = addslashes(htmlspecialchars($_POST['defq']));
$useranswer = addslashes(htmlspecialchars($_POST['zhanswer']));
Doo::loadModel('users');
$users = new Users();
$users->useremail = $_POST['email'];
$users->userquestion = $userquestion;
$users->defquestion = $defquestion;
$users->useranswer = $useranswer;
$RetValue = $users->update(array('where' => 'id=' . $session->user['id']));
// 新注册用户加入待激活列表
$rndcode = $this->create_randomstr();
$acode = md5($session->user['id'] . $rndcode);
Doo::loadModel('userswitch');
$UserSwitch = new UserSwitch();
$UserSwitch->userAdd($session->user['id'], $acode, $rndcode);
if ($RetValue){
$session->user['defquestion'] = $defquestion;
$session->user['userquestion'] = $userquestion;
$session->user['answer'] = $useranswer;
$session->user['email'] = $_POST['email'];
}
$StrSubject = '纵横通行帐号-请激活您的帐号';
$StrContent = '';
@$this->SMail($_POST['email'], $StrSubject, $StrContent);
$this->data['email'] = $_POST['email'];
$this->render($this->theme.'changeMail2', $this->data, TRUE);
die();
}
$this->data['name'] = $session->user['username'];
$this->data['message'] = isset($this->data['message']) ? $this->data['message'] : NULL;
$this->render($this->theme.'addMail', $this->data, TRUE);
}
function AddMobile(){
$session = Doo::session("sso");
if (empty($session->user['id'])) {
return Doo::conf()->APP_URL . 'error/loginFail';
}
$password = isset($_POST['password']) ? $_POST['password'] : NULL;
$mobile = isset($_POST['zhmobile']) ? $_POST['zhmobile'] : NULL;
$code = isset($_POST['zhsmscode']) ? $_POST['zhsmscode'] : NULL;
if (!empty($mobile) && !empty($password) && !empty($code) && $this->checkMobile($mobile)) {
if ($session->user['mobile'] == $_POST['zhmobile']) {
$this->data['message'] = '该手机号码已被注册';
return Doo::conf()->APP_URL . 'error/hadmobile';
exit;
} else {
if (!$this->checkExsitMobile($mobile)) {
$this->data['message'] = '请尝试其他手机号';
return Doo::conf()->APP_URL . 'error/hadmobile';
exit;
}
if ($session->user['password'] != $this->create_password($_POST['password'], $session->user['salt'])) {
$this->data['message'] = '请重新确认您输入的密码';
return Doo::conf()->APP_URL . 'error/mima';
exit;
}
if(!$this->checkSmsCode($mobile,$code)){
$this->data['message'] = '验证码过期或不一致,请重新获取';
return Doo::conf()->APP_URL . 'error/mobile';
exit();
}
Doo::loadModel('users');
$objuser = new Users();
$objuser->mobile = $mobile;
$RetValue = $objuser->update(array('where' => 'id=' . $session->user['id']));
if ($RetValue){
$session->user['mobile'] = $mobile;
// $this->data['mobile'] = $mobile;
return Doo::conf()->APP_URL . 'notic/addmobile';
// $this->render($this->theme.'addMobile2', $this->data, TRUE);
die();
}else{
$this->data['message'] = '修改失败,请重试';
return Doo::conf()->APP_URL . 'error';
exit;
}
}
}
$this->data['name'] = $session->user['username'];
$this->data['message'] = isset($this->data['message']) ? $this->data['message'] : NULL;
$this->render($this->theme.'addMobile', $this->data, TRUE);
}
// Email发送函数
function sendmail($StrEncodeAuth, $toemail) {
Doo::loadClass('class.phpmailer');
$mail = new PHPMailer();
$mail->From = "websupport@smartcost.com.cn"; //发送邮箱全名
$mail->FromName = "=?UTF-8?B?" . base64_encode("纵横知道·通行证") . "?="; //发送人昵称
$mail->Username = "postmaster@websupport.sendcloud.org"; //用户名
$mail->Password = "cDO1GjtY1seH"; //密码
$mail->CharSet = "UTF8";
$mail->SMTPAuth = true;
$mail->Host = "smtpcloud.sohu.com"; //邮件主机的smtp地址
$mail->Port = 25;
$mail->Mailer = "smtp";
$mail->Subject = "=?UTF-8?B?" . base64_encode('纵横通行帐号-修改邮箱确认') . "?=";
$tmplate = '
';
$mail->MsgHTML($tmplate);
$mail->AddAddress($toemail);
$mail->CharSet = "UTF-8";
return $mail->Send();
}
// Email发送函数
function SMail($toemail, $subject, $contents) {
Doo::loadClass('class.phpmailer');
$mail = new PHPMailer();
$mail->From = "websupport@smartcost.com.cn"; //发送邮箱全名
$mail->FromName = "=?UTF-8?B?" . base64_encode("纵横知道·通行证") . "?="; //发送人昵称
$mail->Username = "postmaster@websupport.sendcloud.org"; //用户名
$mail->Password = "cDO1GjtY1seH"; //密码
$mail->CharSet = "UTF8";
$mail->SMTPAuth = true;
$mail->Host = "smtpcloud.sohu.com"; //邮件主机的smtp地址
$mail->Mailer = "smtp";
$mail->Port = 25;
$mail->Subject = "=?UTF-8?B?" . base64_encode($subject) . "?=";
$mail->MsgHTML($contents);
$mail->AddAddress($toemail);
$mail->CharSet = "UTF-8";
return $mail->Send();
}
// 变更邮箱第二步
function ChangEmail() {
$session = Doo::session("sso");
if (empty($session->user['id'])) {
return Doo::conf()->APP_URL . 'error/loginFail';
}
if (empty($session->user['userquestion'])) {
return Doo::conf()->APP_URL . 'safe';
}
$StrEncode = $this->authcode(base64_decode($this->params['AuthStr']), 'DECODE');
if (empty($StrEncode))
return Doo::conf()->APP_URL . 'error/actemail';
list($userid, $useremail, $timetemp) = explode('|', $StrEncode);
if ((time() - $timetemp) > 86400) {
return Doo::conf()->APP_URL . 'error/actemail';
}
if (!$this->checkMail($useremail)) {
return Doo::conf()->APP_URL . 'error/actemail';
}
if ($userid != $session->user['id']) {
return Doo::conf()->APP_URL . 'error/actemail';
}
if ($useremail == $session->user['email']) {
return Doo::conf()->APP_URL . 'error/actemail';
}
Doo::loadModel('users');
$objuser = new Users();
$objuser->useremail = $useremail;
$RetValue = $objuser->update(array('where' => 'id=' . $session->user['id']));
if ($RetValue)
$session->user['email'] = $useremail;
$this->data['email'] = $useremail;
$this->render($this->theme.'changeMail3', $this->data);
}
function secmail() {
// TODO:切换新邮箱未发送此激活邮箱的激活邮件
// TODO:检测已存在邮箱与
$session = Doo::session("sso");
if ($session->user['status'] == 0) {
return Doo::conf()->APP_URL;
}
if (!empty($_POST['sendsubmit'])) {
$StrSubject = '纵横通行帐号-修改邮箱确认';
$StrContent = '';
$this->SMail($session->user['email'], $StrSubject, $StrContent);
// return Doo::conf()->APP_URL . 'sec';
}
if (!empty($_POST['email']))
if ($this->checkMail($_POST['email']) && !empty($_POST['email']) && ($_POST['email'] != $session->user['email'])) {
Doo::loadModel('users');
$objuser = new Users();
$objuser->useremail = $_POST['email'];
$RetValue = $objuser->update(array('where' => 'id=' . $session->user['id']));
if ($RetValue)
$session->user['email'] = $_POST['email'];
$StrSubject = '纵横通行帐号-修改邮箱确认';
$StrContent = '';
if ($this->SMail($session->user['email'], $StrSubject, $StrContent)) {
return Doo::conf()->APP_URL . 'sec';
}
}
$this->data['email'] = isset($session->user['email']) ? $session->user['email'] : NULL;
$this->render($this->theme.'register2', $this->data);
}
function profile() {
$session = Doo::session("sso");
if (!isset($session->user['id'])) {
return Doo::conf()->APP_URL . 'error/loginFail';
}
if ($this->checkUserQuestion($session->user['id']) && (!isset($session->user['mobile']) && empty($session->user['mobile'])))
return Doo::conf()->APP_URL . 'safe';
if (!empty($_POST['sendsubmit'])) {
if (self::isUserActive($session->user['id']))
return Doo::conf()->APP_URL . 'error/actuser';
Doo::loadModel('userswitch');
$UserSwitch = new UserSwitch();
$usArray = $UserSwitch->getOne(array('where' => 'uid=?', 'param' => array($session->user['id']), 'asArray' => TRUE));
$StrSubject = '纵横通行帐号-请激活您的帐号';
$StrContent = '';
if ($this->SMail($session->user['email'], $StrSubject, $StrContent)) {
return Doo::conf()->APP_URL . 'error/isact';
}
}
Doo::loadModel('users');
$users = new Users();
$valuebank = $users->getRowByUid($session->user['id']);
$this->data['bank'] = isset($valuebank[0]['bank']) ? $valuebank[0]['bank'] : 0;
$this->data['name'] = $session->user['username'];
// $this->data['avatar'] = $this->url_exists($this->ps_getavatar($session->user['id'])) ? $this->ps_getavatar($session->user['id']) : Doo::conf()->APP_URL . 'global/img/avatra48.png';
if(isset($session->user['id'])){
$this->data['avatar'] = $this->ps_getavatar($session->user['id']);
}else{
$this->data['avatar'] = Doo::conf()->APP_URL . 'global/img/avatra48.png';
}
$this->data['regdate'] = $session->user['regdate'];
$this->data['email'] = $session->user['email'];
$this->data['mobile'] = $session->user['mobile'];
// $this->data['status'] = $session->user['status'];
$this->data['status'] = self::isUserActive($session->user['id']);
$this->data['FUN'] = __FUNCTION__;
$this->render($this->theme.'profile', $this->data, TRUE);
}
private function url_exists($url) {
$h = get_headers($url);
if (!$h || !isset($h[0]))
return false;
$status = $h[0];
return preg_match("/.*200\s{1}OK/i", $status) ? true : false;
}
function chpasswd() {
// TODO:变更密码后更新SESSION中数据
$session = Doo::session("sso");
if (empty($session->user['id'])) {
return Doo::conf()->APP_URL . 'error/loginFail';
}
if (empty($session->user['userquestion']) && empty($session->user['mobile'])) {
return Doo::conf()->APP_URL . 'safe';
}
$this->data['erroT']="";
$this->data['erroTxt']='';
$this->data['aerroT']="";
$this->data['aerroTxt']='';
$this->data['defquestion'] = null;
$this->data['mobile'] = !empty($session->user['mobile']) ? $session->user['mobile'] : '';
$this->data['userquestion'] = !empty($session->user['userquestion']) ? $session->user['userquestion'] : '';
$this->data['name'] = $session->user['username'];
if (!empty($session->user['defquestion']) || ($session->user['userquestion'] == 6))
$this->data['defquestion'] = $session->user['defquestion'];
if (!empty($session->user['userquestion']) && ($session->user['userquestion'] != 6))
$this->data['defquestion'] = $this->QArray[$session->user['userquestion']];
if (!empty($_POST['subchpwd'])) {
if(isset($_POST['answer']) && !empty($_POST['answer'])){
if($session->user['answer'] == $_POST['answer']){
$action = 1;
}else{
$this->data['erroT']="";
$this->data['erroTxt']='';
$this->data['aerroT']="erroT";
$this->data['aerroTxt']='输入的答案错误';
$this->render($this->theme.'changePassword', $this->data);die;
}
}elseif(isset($_POST['zhsmscode']) && !empty($_POST['zhsmscode'])){
if($this->checkSmsCode($session->user['mobile'],$_POST['zhsmscode'])){
$action = 2;
}else{
$this->data['erroT']="";
$this->data['erroTxt']='';
$this->data['aerroT']="erroT";
$this->data['aerroTxt']='验证码过期或不一致,请重新获取';
$this->render($this->theme.'changePassword', $this->data);die;
}
}else{
$this->data['erroT']="";
$this->data['erroTxt']='';
$this->data['aerroT']="erroT";
$this->data['aerroTxt']='请输入密保答案或手机验证码';
$this->render($this->theme.'changePassword', $this->data);die;
}
if (($session->user['password'] == $this->create_password($_POST['oldpwd'], $session->user['salt']))) {
Doo::loadModel('users');
$objuser = new Users();
// $objuser->id = $session->user['id'];
$objuser->userpasswd = $this->create_password($_POST['newpwd'], $session->user['salt']);
// $objuser->useranswer = $session->user['password'];
// $AryUser[] = $objuser;
$objuser->update(array('where' => 'useranswer=\'' . $session->user['answer'] . '\' and id=' . $session->user['id']));
if($action == 1){
$StrSubject = '纵横通行帐号提醒您:您的帐号修改了新密码';
$StrContent = '
尊敬的' . $session->user['username'] . ':
您的通行帐号修改了新的密码
您之所以收到这封邮件,是因为您曾经注册成为纵横通行帐号的用户。我们保证仅向您发送关于纵横通行帐号的电子邮件。我们尊重并保护您的隐私。
纵横通行帐号与你共成长!
' . date('Y年m月d日', time()) . '
©2012 珠海纵横创新软件有限公司
|
';
$this->SMail($session->user['email'], $StrSubject, $StrContent);
}elseif($action == 2){
}
setcookie(Doo::conf()->COOKIEPRE . 'auth');
$session->user = array();
return $this->logout('msgRelogin');
}elseif($session->user['password'] != $this->create_password($_POST['oldpwd'], $session->user['salt'])){
$this->data['erroT']="erroT";
$this->data['erroTxt']='输入密码有误';
$this->data['aerroT']="";
$this->data['aerroTxt']='';
$this->render($this->theme.'changePassword', $this->data);die;
}
// echo $session->user['id'];
}
$this->render($this->theme.'changePassword', $this->data);
}
// 加密
function authcode($string, $operation = 'DECODE', $key = '', $expiry = 0) {
$ckey_length = 4;
$key = md5($key != '' ? $key : Doo::conf()->AUTHKEY);
$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 logout($msg=null) {
$session = Doo::session("sso");
unset($session->user);
session_destroy();
setcookie(Doo::conf()->COOKIEPRE . 'auth', null, 0, '/', Doo::conf()->APP_URL, 0);
setcookie(Doo::conf()->COOKIEPRE . '_userid', null, 0, '/', Doo::conf()->APP_URL, 0);
setcookie(Doo::conf()->COOKIEPRE . '_username', null, 0, '/', Doo::conf()->APP_URL, 0);
if(!empty($msg)){
return Doo::conf()->APP_URL . 'notic/relogin';
}else{
return Doo::conf()->APP_URL . 'msg/logout';
}
}
// 检测Email格式
function checkMail($email) {
//if (strlen($email) > 6 && preg_match('/^([\w-]+\.?)*\w+@[\w-]+\.[a-z]{2,6}$/', $email)) {
if (filter_var($email, FILTER_VALIDATE_EMAIL)){
return TRUE;
} else {
return FALSE;
}
}
// 检测手机格式
function checkMobile($mobile) {
if(preg_match("/^1[34578]{1}\d{9}$/",$mobile)){
return TRUE;
} else {
return FALSE;
}
}
function checkhadmobile() {
// TODO:检测手机号是否已注册通行账号
if (!empty($_POST['zhmobile'])){
}
}
function checkuser() {
if (!empty($_POST['zhemail']))
$checkemail = $_POST['zhemail'];
if (!empty($_POST['zhuser']))
$checkuser = $_POST['zhuser'];
if(!empty($_POST['zhmobile']))
$checkmobile = $_POST['zhmobile'];
if(!empty($_POST['zhsmscode']))
$checkcode = $_POST['zhsmscode'];
if (!empty($_POST['zhmuser']))
$checkuser = $_POST['zhmuser'];
if (!empty($_POST['password']))
$checkpassword = $_POST['password'];
if (!empty($checkemail))
if ($this->checkMail($checkemail)) {
$user = Doo::db()->find('users', array(
'select' => 'id',
'where' => 'useremail=?',
'param' => array($checkemail),
)
);
if (empty($user)) {
exit('true');
} else {
exit('false');
}
}
if (!empty($checkuser))
if ($checkuser) {
// TODO:判断是否符合账号规则
$user = Doo::db()->find('users', array(
'select' => 'id',
'where' => 'username=?',
'param' => array($checkuser),
)
);
if (empty($user)) {
exit('true');
} else {
exit('false');
}
}
if(!empty($checkcode) && !empty($checkmobile)){
//TODO:检测验证码
if($checkmobile && $checkcode) {
$now = time();
$old = $now-1800;
Doo::loadModel('mobilecode');
$mobilecode = new mobilecode();
$code = $mobilecode->find(array(
'select' => 'id',
'where' => 'mobile='.$checkmobile.' and code='.$checkcode.' and time between '.$old.' and '.$now,
'desc' => 'id',
'limit' => 1,
'asArray' => true
));
if ($code) {
exit('true');
} else {
exit('false');
}
}
}
if(!empty($checkmobile)){
if($checkmobile) {
// TODO:判断是否符合电话并且未注册
$user = Doo::db()->find('users', array(
'select' => 'id',
'where' => 'mobile=?',
'param' => array($checkmobile),
)
);
if (empty($user)) {
exit('true');
} else {
exit('false');
}
}
}
if(!empty($checkpassword)){
if($checkpassword) {
$session = Doo::session("sso");
if ($session->user['password'] == $this->create_password($checkpassword, $session->user['salt'])) {
exit('true');
}else{
exit('false');
}
}
}
}
function checkphone(){
if(!empty($_POST['zhmobile']))
$checkmobile = $_POST['zhmobile'];
if(!empty($checkmobile)){
if($checkmobile) {
// TODO:判断是否符合电话并且已注册
$user = Doo::db()->find('users', array(
'select' => 'id',
'where' => 'mobile=?',
'param' => array($checkmobile),
)
);
if (!empty($user)) {
exit('true');
} else {
exit('false');
}
}
}
}
public function checkemail() {
//TODO:其实检测唯一性就已经检测了当前用户Email
$session = Doo::session("sso");
if (empty($session->user['id'])) {
return Doo::conf()->APP_URL . 'error/loginFail';
}
$newEmail = isset($_POST['email']) ? $_POST['email'] : NULL;
if (!empty($newEmail) && $this->checkMail($newEmail)) {
$session = Doo::session("sso");
if ($newEmail == $session->user['email']) {
exit('false');
}
if (!$this->checkExsitmail($newEmail)) {
exit('false');
}
}
exit('true');
}
public function alipay(){
$session = Doo::session("sso");
if (empty($session->user['id'])) {
return Doo::conf()->APP_URL . 'error/loginFail';
}
if (!empty($_POST['remark2'])) {
Doo::loadModel('m/sale');
$saleObj = new Sale();
$rowNumber = $saleObj->count(array('where'=>'promocode=?','param' => array($_POST['remark2']),'asArray'=>TRUE));
if($rowNumber){
$this->data['remark2'] = $_POST['remark2'];
}else{
$this->data['remark2'] = NULL;
}
} else {
$this->data['remark2'] = NULL;
}
require_once(Doo::conf()->SITE_PATH."protected/class/alipay/alipay.config.php");
require_once(Doo::conf()->SITE_PATH."protected/class/alipay/lib/alipay_submit.class.php");
$alipaySubmit = new AlipaySubmit($alipay_config);
$payment_type = "1";
$notify_url = Doo::conf()->APP_URL."api/smartcost/sso/notify_url.php";
$return_url = Doo::conf()->APP_URL."api/smartcost/sso/return_url.php";
//商户订单号
$sn=$this->create_sn();
$out_trade_no = $sn;
$subject = '纵横通行账户充值';
$extra_common_param=$this->data['remark2']; //用户自定义回传参数
//付款金额
$p_amount=trim($_POST['p_amount']);
$total_fee = $p_amount;
$body = '';
$show_url = '';
//防钓鱼时间戳
$anti_phishing_key = $alipaySubmit->query_timestamp();
$exter_invoke_ip = $this->clientIP();
//构造要请求的参数数组,无需改动
$parameter = array(
"service" => "create_direct_pay_by_user",
"partner" => trim($alipay_config['partner']),
"seller_email" => trim($alipay_config['seller_email']),
"payment_type" => $payment_type,
"notify_url" => $notify_url,
"return_url" => $return_url,
"out_trade_no" => $out_trade_no,
"subject" => $subject,
"total_fee" => $total_fee,
"body" => $body,
"show_url" => $show_url,
"anti_phishing_key" => $anti_phishing_key,
"exter_invoke_ip" => $exter_invoke_ip,
"_input_charset" => trim(strtolower($alipay_config['input_charset'])),
"extra_common_param"=> $extra_common_param
);
//建立请求
$html_text = $alipaySubmit->buildRequestForm($parameter,"get", "加载中");
// 生成订单
Doo::loadModel('pay');
$pay = new Pay();
$array = array('trade_sn' => $sn,
'userid' => $session->user['id'],
'username' => $session->user['username'],
'telephone' => $this->data['remark2'],
'money' => $p_amount,
'addtime' => time(),
'usernote' => $session->user['username'] . '[' . $sn . ']',
'pay_type' => 'alipay',
'payment' => '支付宝',
'ip' => $this->clientIP(),
'status' => 'unpay'
);
$pay->add($array);
header("Content-type: text/html; charset=utf-8");
echo $html_text;
}
function returnAlipay(){
$session = Doo::session("sso");
if (empty($session->user['id'])) {
return Doo::conf()->APP_URL . 'error/loginFail';
}
require_once(Doo::conf()->SITE_PATH."protected/class/alipay/alipay.config.php");
require_once(Doo::conf()->SITE_PATH."protected/class/alipay/lib/alipay_notify.class.php");
$alipayNotify = new AlipayNotify($alipay_config);
$verify_result = $alipayNotify->verifyReturn();
if($verify_result) {
$v_oid = $_GET['out_trade_no']; //商户订单号
$trade_no = $_GET['trade_no']; //支付宝交易号
$trade_status = $_GET['trade_status']; //交易状态
$v_amount=$_GET['total_fee']; //交易金额
$remark2 = $_GET['extra_common_param'];
if($_GET['trade_status'] == 'TRADE_FINISHED' || $_GET['trade_status'] == 'TRADE_SUCCESS') {
$pay = Doo::loadModel('pay', TRUE);
$callbackData = $pay->getRowsBySN($v_oid);
if ($callbackData['status'] == 'unpay') {
if ($callbackData['money'] == $v_amount) {
$pay->trade_sn = $v_oid;
$comment = $pay->find(array('limit' => 1, 'select' => 'id', 'asArray' => TRUE));
$pay->id = $comment['id'];
$pay->paytime = time();
$pay->status = 'succ';
$succvalue = $pay->update();
if ($succvalue) {
// 增加销售人员提成与折扣
if(!empty($remark2)&&($v_amount>=$this->cashlimit)){
$salerGet = floor($v_amount*$this->salelimit); // 计算销售人员获得的提成
$v_amount += floor($v_amount*$this->perlimit); // 计算输入优惠码的最终充值金额
Doo::loadModel('m/sale');
$saleObj = new Sale();
$saleObj->total = new DooDbExpression('total+' . $salerGet);
$saleObj->update(array('where'=>'promocode=?','param'=>array($remark2)));
}
Doo::loadModel('users');
$users = new Users();
$moneyValue = $users->updateBank($callbackData['userid'], $v_amount);
if ($moneyValue) {
$this->data['msg'] = '充值完成';
header('refresh:3;url=/');
}
//发送邮件
include ('./protected/class/email_templete.file.php');
//获取文档 $callbackData['userid']
$userinfo=$users->getRowByUid( $callbackData['userid']);
//$v_amount , $v_oid
$templete_email=$this->format_email_content($email_file['RECHARGE_SUCCESS'], "RECHARGE_SUCCESS",$v_amount,$userinfo,$v_oid);
//$templete_email['toemail']="cpthought@vip.qq.com";
if(filter_var($templete_email['toemail'], FILTER_VALIDATE_EMAIL))
$this->_mail($templete_email['templete'],$templete_email['subject'],$templete_email['toemail']);
}
}
} else {
$this->data['msg'] = '已充值完毕,操作无效';
header('refresh:3;url=/');
}
}
}else {
$this->data['msg'] = '充值故障';
header('refresh:3;url=/');
}
$this->render($this->theme.'recharge_msg', $this->data, TRUE);
}
function notifyAlipay(){
require_once(Doo::conf()->SITE_PATH."protected/class/alipay/alipay.config.php");
require_once(Doo::conf()->SITE_PATH."protected/class/alipay/lib/alipay_notify.class.php");
$alipayNotify = new AlipayNotify($alipay_config);
$verify_result = $alipayNotify->verifyNotify();
if($verify_result) {
$v_oid = $_POST['out_trade_no']; //商户订单号
$trade_no = $_POST['trade_no']; //支付宝交易号
$trade_status = $_POST['trade_status']; //交易状态
$v_amount=$_POST['total_fee']; //交易金额
$remark2 = $_POST['extra_common_param'];
if($_POST['trade_status'] == 'TRADE_FINISHED' || $_POST['trade_status'] == 'TRADE_SUCCESS') {
$pay = Doo::loadModel('pay', TRUE);
$callbackData = $pay->getRowsBySN($v_oid);
if ($callbackData['status'] == 'unpay') {
if ($callbackData['money'] == $v_amount) {
$pay->trade_sn = $v_oid;
$comment = $pay->find(array('limit' => 1, 'select' => 'id', 'asArray' => TRUE));
$pay->id = $comment['id'];
$pay->paytime = time();
$pay->status = 'succ';
$succvalue = $pay->update();
if ($succvalue) {
// 增加销售人员提成与折扣
if(!empty($remark2)&&($v_amount>=$this->cashlimit)){
$salerGet = floor($v_amount*$this->salelimit); // 计算销售人员获得的提成
$v_amount += floor($v_amount*$this->perlimit); // 计算输入优惠码的最终充值金额
Doo::loadModel('m/sale');
$saleObj = new Sale();
$saleObj->total = new DooDbExpression('total+' . $salerGet);
$saleObj->update(array('where'=>'promocode=?','param'=>array($remark2)));
}
Doo::loadModel('users');
$users = new Users();
$moneyValue = $users->updateBank($callbackData['userid'], $v_amount);
if ($moneyValue) {
Doo::loadModel('income_pay');
$incomepay = new IncomePay();
$incomepay->uid = $callbackData['userid'];
$incomepay->money = $v_amount;
$incomepay->type = 1;
$incomepay->comefrom = '支付宝';
$incomepay->addtime = time();
$incomepay->insert();
echo "success"; die;
}
//发送邮件
include ('./protected/class/email_templete.file.php');
//获取文档 $callbackData['userid']
$userinfo=$users->getRowByUid( $callbackData['userid']);
//$v_amount , $v_oid
$templete_email=$this->format_email_content($email_file['RECHARGE_SUCCESS'], "RECHARGE_SUCCESS",$v_amount,$userinfo,$v_oid);
//$templete_email['toemail']="cpthought@vip.qq.com";
if(filter_var($templete_email['toemail'], FILTER_VALIDATE_EMAIL))
$this->_mail($templete_email['templete'],$templete_email['subject'],$templete_email['toemail']);
}
}
}
}
echo "success";
}else {
echo "fail";
}
}
public function deposit2() {
$session = Doo::session("sso");
if (empty($session->user['id'])) {
return Doo::conf()->APP_URL . 'error/loginFail';
}
$sn = $this->create_sn();
if (isset($_POST['isubmit']) && isset($_POST['ibank']) && is_numeric($_POST['ibank'])) {
$money = intval($_POST['ibank']);
// if (preg_match('/^1[3458][0-9]{9}$/', $_POST['remark2'])) {
if (!empty($_POST['remark2'])) {
Doo::loadModel('m/sale');
$saleObj = new Sale();
$rowNumber = $saleObj->count(array('where'=>'promocode=?','param' => array($_POST['remark2']),'asArray'=>TRUE));
if($rowNumber){
$this->data['remark2'] = $_POST['remark2'];
}else{
$this->data['remark2'] = NULL;
}
} else {
$this->data['remark2'] = NULL;
}
Doo::loadModel('pay');
$pay = new Pay();
$array = array('trade_sn' => $sn, 'userid' => $session->user['id'], 'username' => $session->user['username'], 'money' => $money, 'telephone' => $this->data['remark2'], 'addtime' => time(), 'pay_type' => 'offline', 'payment' => '银行转账', 'ip' => $this->clientIP(), 'status' => 'waitting');
$pay->add($array);
$this->data['money'] = $money;
// header('refresh:2;url=' . Doo::conf()->APP_URL . 'deposit');
$this->render($this->theme.'bankConfirm', $this->data, TRUE);
die();
}
Doo::loadModel('users');
$users = new Users();
$valuebank = $users->getRowByUid($session->user['id']);
$this->data['bank'] = isset($valuebank[0]['bank']) ? $valuebank[0]['bank'] : 0;
$this->data['sn'] = $sn;
$this->data['usercat'] = NULL;
$this->data['extmenu'] = 0;
$this->data['FUN'] = __FUNCTION__;
if($session->user['id']){
$this->data['avatar'] = $this->ps_getavatar($session->user['id']);
}else{
$this->data['avatar'] = Doo::conf()->APP_URL . 'global/img/avatra48.png';
}
$this->data['name'] = $session->user['username'];
$this->render($this->theme.'recharge', $this->data, TRUE);
}
public function deposit3() {
$session = Doo::session("sso");
if (empty($session->user['id'])) {
return Doo::conf()->APP_URL . 'error/loginFail';
}
$bankArray = array(
/*'1025' => 'https://pay3.chinabank.com.cn/i/bank_gsyh2.gif',
'308' => 'https://pay3.chinabank.com.cn/i/bank_zsyh2.gif',
'105' => 'https://pay3.chinabank.com.cn/i/bank_jsyh2.gif',
'103' => 'https://pay3.chinabank.com.cn/i/bank_nyyh2.gif',
'104' => 'https://pay3.chinabank.com.cn/i/bank_zgyh2.gif',
'301' => 'https://pay3.chinabank.com.cn/i/bank_jtyh.gif',
'311' => 'https://pay3.chinabank.com.cn/i/bank_hxyh.gif',
'309' => 'https://pay3.chinabank.com.cn/i/bank_xyyh.gif',
'305' => 'https://pay3.chinabank.com.cn/i/bank_msyh2.gif',
'306' => 'https://pay3.chinabank.com.cn/i/bank_gdfz.gif',
'307' => 'https://pay3.chinabank.com.cn/i/bank_szfz.gif',
'314' => 'https://pay3.chinabank.com.cn/i/bank_pfyh.gif',
'313' => 'https://pay3.chinabank.com.cn/i/bank_zxyh.gif',
'312' => 'https://pay3.chinabank.com.cn/i/bank_gdyh.gif',
'316' => 'https://pay3.chinabank.com.cn/i/bank_njyh.gif',
'317' => 'https://pay3.chinabank.com.cn/i/bank_bhyh.gif',
'3279' => 'https://pay3.chinabank.com.cn/i/bank_psbc.gif',
'327' => 'https://pay3.chinabank.com.cn/i/bank_unionpay.gif'*/
'1025'=>'http://bank-logo.qiniudn.com/bank_gsyh2.gif',
'308'=>'http://bank-logo.qiniudn.com/bank_zsyh2.gif',
'105'=>'http://bank-logo.qiniudn.com/bank_jsyh2.gif',
'103'=>'http://bank-logo.qiniudn.com/bank_nyyh2.gif',
'104'=>'http://bank-logo.qiniudn.com/bank_zgyh2.gif',
'301'=>'http://bank-logo.qiniudn.com/bank_jtyh.gif',
'311'=>'http://bank-logo.qiniudn.com/bank_hxyh.gif',
'309'=>'http://bank-logo.qiniudn.com/bank_xyyh.gif',
'305'=>'http://bank-logo.qiniudn.com/bank_msyh2.gif',
'306'=>'http://bank-logo.qiniudn.com/bank_gdfz.gif',
'307'=>'http://bank-logo.qiniudn.com/bank_payh.gif',
'314'=>'http://bank-logo.qiniudn.com/bank_pfyh.gif',
'313'=>'http://bank-logo.qiniudn.com/bank_zxyh.gif',
'312'=>'http://bank-logo.qiniudn.com/bank_gdyh.gif',
'316'=>'http://bank-logo.qiniudn.com/bank_njyh.gif',
'3230'=>'http://bank-logo.qiniudn.com/bank_psbc.gif',
'324'=>'http://bank-logo.qiniudn.com/bank_hangzhou.jpg',
'302'=>'http://bank-logo.qiniudn.com/bank_nbyh.gif',
'310'=>'http://bank-logo.qiniudn.com/bank_bj.gif',
'342'=>'http://bank-logo.qiniudn.com/bank_CQRCB.gif',
'343'=>'http://bank-logo.qiniudn.com/bank_SRCB.gif',
'335'=>'http://bank-logo.qiniudn.com/bank_BJRCB.gif',
'3341'=>'http://bank-logo.qiniudn.com/bank_QDCCB.gif',
'336'=>'http://bank-logo.qiniudn.com/bank_BOCD.gif',
);
$banKey = array_keys($bankArray);
if (isset($_POST['v_amount']) && isset($_POST['bank']) && in_array($_POST['bank'], $banKey)) {
$this->data['v_amount'] = $_POST['v_amount'];
$this->data['bankid'] = $_POST['bank'];
$this->data['bankinfo'] = $bankArray[$this->data['bankid']];
} else {
return Doo::conf()->APP_URL . 'depositnew';
}
$this->data['usercat'] = NULL;
$this->data['extmenu'] = 0;
Doo::loadModel('users');
$users = new Users();
$valuebank = $users->getRowByUid($session->user['id']);
$this->data['bank'] = isset($valuebank[0]['bank']) ? $valuebank[0]['bank'] : 0;
$this->data['FUN'] = __FUNCTION__;
if($session->user['id']){
$this->data['avatar'] = $this->ps_getavatar($session->user['id']);
}else{
$this->data['avatar'] = Doo::conf()->APP_URL . 'global/img/avatra48.png';
}
$this->render($this->theme.'recharge2', $this->data, TRUE);
}
/**
* 生成流水号
*/
function create_sn() {
mt_srand((double) microtime() * 1000000);
return date("YmdHis") . str_pad(mt_rand(1, 99999), 5, "0", STR_PAD_LEFT);
}
public function send() {
// TODO:20130312
// TODO:没有检验金额,是否额定
// TODO:请求链接来源验证
// TODO:防止暴力提交订单
// TODO:检测是否存在为支付订单,防止重复提交
// TODO:增加销售人员手机号作为优惠码20130503
$session = Doo::session("sso");
if (empty($session->user['id'])) {
return Doo::conf()->APP_URL . 'error/loginFail';
}
$this->data['v_oid'] = $this->create_sn();
$this->data['v_mid'] = '22544863'; // 商户号,这里为测试商户号1001,替换为自己的商户号(老版商户号为4位或5位,新版为8位)即可
$this->data['v_url'] = 'http://sso.smartcost.com.cn/Receive'; // 请填写返回url,地址应为绝对路径,带有http协议
$this->data['v_return'] = 'http://sso.smartcost.com.cn'; // 请填写返回url,地址应为绝对路径,带有http协议
$this->data['key'] = 'smartcost@)!@onlinepaychinabank'; // 如果您还没有设置MD5密钥请登陆我们为您提供商户后台,地址:https://merchant3.chinabank.com.cn/
$this->data['v_amount'] = trim($_POST['v_amount']); //支付金额
$this->data['v_moneytype'] = "CNY"; //币种
$this->data['text'] = $this->data['v_amount'] . $this->data['v_moneytype'] . $this->data['v_oid'] . $this->data['v_mid'] . $this->data['v_url'] . $this->data['key']; //md5加密拼凑串,注意顺序不能变
$this->data['v_md5info'] = strtoupper(md5($this->data['text'])); //md5函数加密并转化成大写字母
if (isset($_POST['bank'])) {
$this->data['bank'] = trim($_POST['bank']); //md5函数加密并转化成大写字母
} else {
$this->data['bank'] = NULL;
}
// $this->data['remark2'] = isset($_POST['remark2']) ? trim($_POST['remark2']) : NULL; //备注字段2
// if (preg_match('/^1[3458][0-9]{9}$/', $_POST['remark2'])) {
if (!empty($_POST['remark2'])) {
Doo::loadModel('m/sale');
$saleObj = new Sale();
$rowNumber = $saleObj->count(array('where'=>'promocode=?','param' => array($_POST['remark2']),'asArray'=>TRUE));
if($rowNumber){
$this->data['remark2'] = $_POST['remark2'];
}else{
$this->data['remark2'] = NULL;
}
} else {
$this->data['remark2'] = NULL;
}
// 生成订单
Doo::loadModel('pay');
$pay = new Pay();
$array = array('trade_sn' => $this->data['v_oid'], 'userid' => $session->user['id'], 'username' => $session->user['username'], 'telephone' => $this->data['remark2'], 'money' => $this->data['v_amount'], 'addtime' => time(), 'usernote' => $session->user['username'] . '[' . $this->data['v_oid'] . ']', 'pay_type' => 'recharge', 'payment' => '网银在线', 'ip' => $this->clientIP(), 'status' => 'unpay','pay_id'=>$this->data['bank']);
$pay->add($array);
$this->data['remark1'] = $this->getUserName() . '[' . $this->data['v_oid'] . ']'; //备注字段1
$this->data['v_rcvname'] = isset($_POST['v_rcvname']) ? trim($_POST['v_rcvname']) : NULL; // 收货人
$this->data['v_rcvaddr'] = isset($_POST['v_rcvaddr']) ? trim($_POST['v_rcvaddr']) : NULL; // 收货地址
$this->data['v_rcvtel'] = isset($_POST['v_rcvtel']) ? trim($_POST['v_rcvtel']) : NULL; // 收货人电话
$this->data['v_rcvpost'] = isset($_POST['v_rcvpost']) ? trim($_POST['v_rcvpost']) : NULL; // 收货人邮编
$this->data['v_rcvemail'] = isset($_POST['v_rcvemail']) ? trim($_POST['v_rcvemail']) : NULL; // 收货人邮件
$this->data['v_rcvmobile'] = isset($_POST['v_rcvmobile']) ? trim($_POST['v_rcvmobile']) : NULL; // 收货人手机号
$this->data['v_ordername'] = isset($_POST['v_ordername']) ? trim($_POST['v_ordername']) : NULL; // 订货人姓名
$this->data['v_orderaddr'] = isset($_POST['v_orderaddr']) ? trim($_POST['v_orderaddr']) : NULL; // 订货人地址
$this->data['v_ordertel'] = isset($_POST['v_ordertel']) ? trim($_POST['v_ordertel']) : NULL; // 订货人电话
$this->data['v_orderpost'] = isset($_POST['v_orderpost']) ? trim($_POST['v_orderpost']) : NULL; // 订货人邮编
$this->data['v_orderemail'] = isset($_POST['v_orderemail']) ? trim($_POST['v_orderemail']) : NULL; // 订货人邮件
$this->data['v_ordermobile'] = isset($_POST['v_ordermobile']) ? trim($_POST['v_ordermobile']) : NULL; // 订货人手机号
$this->render($this->theme.'send', $this->data, TRUE);
}
// 手动对账
public function receive() {
$session = Doo::session("sso");
if (empty($session->user['id'])) {
return Doo::conf()->APP_URL . 'error/loginFail';
}
$key = 'smartcost@)!@onlinepaychinabank';
$v_oid = isset($_POST['v_oid']) ? trim($_POST['v_oid']) : NULL; // 商户发送的v_oid定单编号
$v_pmode = isset($_POST['v_pmode']) ? trim($_POST['v_pmode']) : NULL; // 支付方式(字符串)
$v_pstatus = isset($_POST['v_pstatus']) ? trim($_POST['v_pstatus']) : NULL; // 支付状态 :20(支付成功);30(支付失败)
$v_pstring = isset($_POST['v_pstring']) ? trim($_POST['v_pstring']) : NULL; // 支付结果信息 : 支付完成(当v_pstatus=20时);失败原因(当v_pstatus=30时,字符串);
$v_amount = isset($_POST['v_amount']) ? trim($_POST['v_amount']) : NULL; // 订单实际支付金额
$v_moneytype = isset($_POST['v_moneytype']) ? trim($_POST['v_moneytype']) : NULL; //订单实际支付币种
$remark1 = isset($_POST['remark1']) ? trim($_POST['remark1']) : NULL; //备注字段1
$remark2 = isset($_POST['remark2']) ? trim($_POST['remark2']) : NULL; //备注字段2
$v_md5str = isset($_POST['v_md5str']) ? trim($_POST['v_md5str']) : NULL; //拼凑后的MD5校验值
// echo $v_oid . '|' . $v_pstatus . '|' . $v_amount . '|' . $v_moneytype . '|' . $key;
/**
* 重新计算md5的值
* // 增加优惠信息
*/
$md5string = strtoupper(md5($v_oid . $v_pstatus . $v_amount . $v_moneytype . $key)); //拼凑加密串
if ($v_md5str == $md5string) {
if ($v_pstatus == '20') {
$pay = Doo::loadModel('pay', TRUE);
$callbackData = $pay->getRowsBySN($v_oid);
if ($callbackData['status'] == 'unpay') {
if ($callbackData['money'] == $v_amount) {
$pay->trade_sn = $v_oid;
$comment = $pay->find(array('limit' => 1, 'select' => 'id', 'asArray' => TRUE));
$pay->id = $comment['id'];
$pay->paytime = time();
$pay->status = 'succ';
$succvalue = $pay->update();
Doo::loadModel('income_pay');
$incomepay = new IncomePay();
$incomepay->uid = $session->user['id'];
$incomepay->money = $v_amount;
$incomepay->type = 1;
$incomepay->comefrom = '网银在线';
$incomepay->addtime = time();
$incomepay->insert();
if ($succvalue) {
// 增加销售人员提成与折扣
if(!empty($remark2)&&($v_amount>=$this->cashlimit)){
$salerGet = floor($v_amount*$this->salelimit); // 计算销售人员获得的提成
$v_amount += floor($v_amount*$this->perlimit); // 计算输入优惠码的最终充值金额
Doo::loadModel('m/sale');
$saleObj = new Sale();
$saleObj->total = new DooDbExpression('total+' . $salerGet);
$saleObj->update(array('where'=>'promocode=?','param'=>array($remark2)));
}
Doo::loadModel('users');
$users = new Users();
$moneyValue = $users->updateBank($callbackData['userid'], $v_amount);
if ($moneyValue) {
$this->data['msg'] = '充值完成';
header('refresh:3;url=/');
}
//发送邮件
include ('./protected/class/email_templete.file.php');
//获取文档 $callbackData['userid']
$userinfo=$users->getRowByUid( $callbackData['userid']);
//$v_amount , $v_oid
$templete_email=$this->format_email_content($email_file['RECHARGE_SUCCESS'], "RECHARGE_SUCCESS",$v_amount,$userinfo,$v_oid);
//$templete_email['toemail']="cpthought@vip.qq.com";
if(filter_var($templete_email['toemail'], FILTER_VALIDATE_EMAIL))
$this->_mail($templete_email['templete'],$templete_email['subject'],$templete_email['toemail']);
}
}
} else {
$this->data['msg'] = '已充值完毕,操作无效';
header('refresh:3;url=/');
}
}
} else {
$this->data['msg'] = '充值故障';
header('refresh:3;url=/');
}
$this->render($this->theme.'recharge_msg', $this->data, TRUE);
}
/**
* 判断email格式是否正确
* @param $string email
*/
public function getUserID() {
$userid = self::get_cookie('_userid');
if ($userid) {
return $userid;
} else {
return FALSE;
}
}
public function getUserName() {
$username = self::get_cookie('_username');
if ($username) {
return $username;
} else {
return FALSE;
}
}
public function get_cookie($var, $default = '') {
$varvar = Doo::conf()->COOKIEPRE . $var;
return isset($_COOKIE[$varvar]) ? $this->authcode($_COOKIE[$varvar], 'DECODE') : $default;
}
public function issafe() {
$session = Doo::session("sso");
if (empty($session->user['id'])) {
return Doo::conf()->APP_URL . 'error/loginFail';
}
if ($this->checkUserQuestionExs($session->user['id'])) {
return Doo::conf()->APP_URL . 'profile';
}
if (!empty($_POST['isubmit'])) {
$userquestion = htmlspecialchars($_POST['zhq']);
$defquestion = addslashes(htmlspecialchars($_POST['defq']));
$useranswer = addslashes(htmlspecialchars($_POST['zhanswer']));
if (in_array($userquestion, array(1, 2, 3, 4, 5, 6))) {
Doo::loadModel('users');
$users = new Users();
if (($userquestion == 6) && !empty($defquestion)) {
$users->defquestion = $defquestion;
}
$users->userquestion = $userquestion;
$users->useranswer = $useranswer;
$users->update(array('where' => 'id=' . $session->user['id']));
$session->user['userquestion'] = $userquestion;
return Doo::conf()->APP_URL . 'profile';
}
}
$this->data['avatar'] = $this->url_exists($this->ps_getavatar($session->user['id'])) ? $this->ps_getavatar($session->user['id']) : Doo::conf()->APP_URL . 'global/img/avatra48.png';
$this->data['qArray'] = $this->QArray;
$this->render($this->theme.'oldAunRe', $this->data, TRUE);
}
public function saveSafe() {
// $data = array('str' => '你好测试一下好不好用', 1 => 2, 2 => 3);
//// var_dump($data);
//// serialize
// $msg = msgpack_pack($data);
//
//// hexadecimal
// $str = unpack('H*', $msg);
// var_dump($str);
//// deserialize
//// $ret = msgpack_unpack($msg);
//// var_dump($ret);
$this->data['qArray'] = $this->QArray;
$this->render($this->theme.'oldAunRe', $this->data, TRUE);
}
public function pay() {
$session = Doo::session("sso");
if (empty($session->user['id'])) {
return Doo::conf()->APP_URL . 'error/loginFail';
}
Doo::loadModel('users');
$users = new Users();
$valuebank = $users->getRowByUid($session->user['id']);
$this->data['bank'] = isset($valuebank[0]['bank']) ? $valuebank[0]['bank'] : 0;
$this->data['name'] = $session->user['username'];
$this->data['avatar'] = $this->url_exists($this->ps_getavatar($session->user['id'])) ? $this->ps_getavatar($session->user['id']) : Doo::conf()->APP_URL . 'global/img/avatra48.png';
$this->render($this->theme.'toCash2', $this->data, TRUE);
}
public function ps_getavatar($uid) {
$dir1 = ceil($uid / 10000);
$dir2 = ceil($uid % 10000 / 1000);
$url = Doo::conf()->APP_URL . 'data/avatar/' . $dir1 . '/' . $dir2 . '/' . $uid . '/';
$avatar = array('180' => $url . '180x180.jpg', '90' => $url . '90x90.jpg', '45' => $url . '45x45.jpg', '30' => $url . '30x30.jpg');
return $avatar['45'];
}
// Not activated 未激活状态更改邮箱
public function nactChangMail() {
$session = Doo::session("sso");
$this->data['name'] = $session->user['username'];
if (empty($session->user['id'])) {
return Doo::conf()->APP_URL . 'error/loginFail';
}
if (self::isUserActive($session->user['id']))
return Doo::conf()->APP_URL . 'error/actuser';
if (isset($_POST['isubmit'])) {
$ismail = $this->checkMail($_POST['nactmail']);
if (!$ismail)
return Doo::conf()->APP_URL . 'error/erroremail';
$isok = $this->checkExsitmail($_POST['nactmail']);
if (!$isok || ($session->user['useremail'] == $_POST['nactmail']))
return Doo::conf()->APP_URL . 'error/userdemail';
$users = Doo::loadModel('users', true);
$users->id = $session->user['id'];
$users->useremail = $_POST['nactmail'];
$succvalue = $users->update();
if ($succvalue) {
Doo::loadModel('userswitch');
$UserSwitch = new UserSwitch();
$usArray = $UserSwitch->getOne(array('where' => 'uid=?', 'param' => array($session->user['id']), 'asArray' => TRUE));
$StrSubject = '纵横通行帐号-请激活您的帐号';
$StrContent = '';
$this->SMail($_POST['nactmail'], $StrSubject, $StrContent);
$this->data['nowmail'] = $session->user['email'] = $_POST['nactmail'];
$this->render($this->theme.'mailConfirm', $this->data, TRUE);
exit();
} else {
$this->render($this->theme.'newMailch', $this->data, TRUE);
exit();
}
}
$this->render($this->theme.'newMailch', $this->data, TRUE);
}
public function regMobile(){
$this->render($this->theme.'registerMobile', $this->data, TRUE);
}
public function getPWMobile(){
$this->render($this->theme.'getPassword-mobile', $this->data, TRUE);
}
public function setPWMobile() {
if($this->checkSmsCode($_POST['zhmobile'],$_POST['zhsmscode'])){
$user = Doo::db()->find('users', array(
'select' => 'id,salt,username,mobile',
'where' => 'mobile=?',
'param' => array($_POST['zhmobile'])
)
);
if(!empty($user)){
$this->data['userid'] = $user[0]->id;
$this->data['usersalt'] = $user[0]->salt;
$this->render($this->theme.'getPassword-mobile2', $this->data, TRUE);
die;
} else {
$this->data['messages'] = '手机号有误,请重新输入';
}
}else{
$this->data['messages'] = '验证码过期或不一致,请重新获取';
}
$this->render($this->theme.'getPassword-mobile', $this->data, TRUE);
}
public function successPW(){
if(isset($_POST['userid'])){
// TODO:重新设置密码过程
$newPasswdStr = $_POST['password'];
$newPasswd = $this->create_password($newPasswdStr, $_POST['usersalt']);
$usersObj = Doo::loadModel('users', TRUE);
$usersObj->id = $_POST['userid'];
$usersObj->userpasswd = $newPasswd;
if ($usersObj->update()) {
$this->render($this->theme . 'getPassword-mobile-success', $this->data, TRUE);
die;
}else{
$this->data['messages'] = '新密码有误,请重新输入';
$this->data['userid'] = $_POST['userid'];
$this->data['usersalt'] = $_POST['usersalt'];
$this->render($this->theme.'getPassword-mobile2', $this->data, TRUE);
die;
}
}
return '/mobile/getpasswd';
}
public function Voucher(){
$session = Doo::session("sso");
if (empty($session->user['id'])) {
return Doo::conf()->APP_URL . 'error/loginFail';
}
Doo::loadModel('voucher');
Doo::loadModel('users');
$voucher = new Voucher();
if(isset($_POST['code'])){
$vinfo = $voucher->getRowbyCode($_POST['code']);
if(!empty($vinfo) && isset($vinfo['vstarttime']) && $vinfo['vstarttime'] <= time()){
Doo::loadModel('users_voucher');
$usersvoucher = new UsersVoucher();
$hadnum = $usersvoucher->count(array('where' => 'vid='.$vinfo['id']));
if($vinfo['vendtime'] < time() || ($vinfo['vcount'] != 0 && $hadnum >= $vinfo['vcount'])){
$this->data['pnote'] = '领取码"'.$_POST['code'].'"的活动已结束';
}else{
$checktake = $usersvoucher->checkuser($session->user['id'],$vinfo['id']);
if(!$checktake){
$this->data['pnote'] = '领取码"'.$_POST['code'].'"的活动您已参加,不可再次领取';
}else{
$usersvoucher->userid = $session->user['id'];
$usersvoucher->vid = $vinfo['id'];
$usersvoucher->vmoney = $vinfo['vcost'];
$usersvoucher->addtime = time();
$usersvoucher->vname = $vinfo['vname'];
$usersvoucher->insert();
Doo::loadModel('pay');
$pay = new Pay();
$array = array(
'trade_sn' => $this->create_sn(),
'userid' => $session->user['id'],
'username' => $session->user['username'],
'money' => $vinfo['vcost'],
'addtime' => time(),
'usernote' => $session->user['username'] . '[' . $this->create_sn() . ']',
'pay_type' => 'voucher',
'payment' => $vinfo['vname'],
'ip' => $this->clientIP(),
'status' => 'succ'
);
$pay->add($array);
$user = new Users();
$k=$user->updateBank($session->user['id'], $vinfo['vcost']);
if($k){
Doo::loadModel('income_pay');
$incomepay = new IncomePay();
$incomepay->uid = $session->user['id'];
$incomepay->money = $vinfo['vcost'];
$incomepay->type = 1;
$incomepay->comefrom = '代金券';
$incomepay->description = $vinfo['vname'];
$incomepay->addtime = time();
$incomepay->insert();
$this->data['pnote'] = '您成功领取了"'.$_POST['code'].'"领取码的活动';
}
}
}
}else{
$this->data['pnote'] = '没有"'.$_POST['code'].'"领取码的活动';
}
}
Doo::loadModel('users_voucher');
$uvou = new UsersVoucher();
$this->data['uvounum'] = $uvou->count(array('where' => 'userid='.$session->user['id'], 'asArray' => TRUE));
$uvoulist = $uvou->getvoucher($session->user['id'],20);
if(!empty($uvoulist)){
$this->data['uvoulist'] = $uvoulist;
}
$users = new Users();
$valuebank = $users->getRowByUid($session->user['id']);
$this->data['bank'] = isset($valuebank[0]['bank']) ? $valuebank[0]['bank'] : 0;
$this->data['name'] = $session->user['username'];
// $this->data['avatar'] = $this->url_exists($this->ps_getavatar($session->user['id'])) ? $this->ps_getavatar($session->user['id']) : Doo::conf()->APP_URL . 'global/img/avatra48.png';
if(isset($session->user['id'])){
$this->data['avatar'] = $this->ps_getavatar($session->user['id']);
}else{
$this->data['avatar'] = Doo::conf()->APP_URL . 'global/img/avatra48.png';
}
$this->data['FUN'] = 'voucher';
$this->render($this->theme.'voucher', $this->data, TRUE);
}
public function getVoucherMsg(){
$session = Doo::session("sso");
if (empty($session->user['id'])) {
return Doo::conf()->APP_URL . 'error/loginFail';
}
if(isset($this->params['pindex']) && is_numeric($this->params['pindex'])) {
Doo::loadModel('users_voucher');
$uvou = new UsersVoucher();
$limit = ($this->params['pindex']*20).',20';
$uvoulist = $uvou->getvoucher($session->user['id'], $limit);
if (!empty($uvoulist)) {
$uvounum = $uvou->count(array('where' => 'userid='.$session->user['id'], 'asArray' => TRUE));
$num = 0;
if($this->params['pindex']*20+20 < $uvounum){
$num = $this->params['pindex']+1;
};
foreach($uvoulist as $k => $v){
$uvoulist[$k]['addtime'] = date("Y-m-d H:i:s",$v['addtime']);
}
echo json_encode(array('code' => 200, 'uvoulist' => $uvoulist, 'num' => $num));
exit;
}
}
echo json_encode(array('code' => 400));
exit;
}
public function Order(){
$session = Doo::session("sso");
if (empty($session->user['id'])) {
return Doo::conf()->APP_URL . 'error/loginFail';
}
Doo::loadModel('income_pay');
$incomepay = new IncomePay();
$this->data['incomepaynum'] = $incomepay->count(array('where' => 'uid='.$session->user['id'], 'asArray' => TRUE));
$incomepaylist = $incomepay->get_listbyuid($session->user['id'],20);
if(!empty($incomepaylist)){
$this->data['incomepaylist'] = $incomepaylist;
}
Doo::loadModel('users');
$users = new Users();
$valuebank = $users->getRowByUid($session->user['id']);
$this->data['bank'] = isset($valuebank[0]['bank']) ? $valuebank[0]['bank'] : 0;
$this->data['name'] = $session->user['username'];
// $this->data['avatar'] = $this->url_exists($this->ps_getavatar($session->user['id'])) ? $this->ps_getavatar($session->user['id']) : Doo::conf()->APP_URL . 'global/img/avatra48.png';
if(isset($session->user['id'])){
$this->data['avatar'] = $this->ps_getavatar($session->user['id']);
}else{
$this->data['avatar'] = Doo::conf()->APP_URL . 'global/img/avatra48.png';
}
$this->data['FUN'] = '';
$this->render($this->theme.'order', $this->data, TRUE);
}
public function getOrderMsg(){
$session = Doo::session("sso");
if (empty($session->user['id'])) {
return Doo::conf()->APP_URL . 'error/loginFail';
}
if(isset($this->params['pindex']) && is_numeric($this->params['pindex'])) {
Doo::loadModel('income_pay');
$incomepay = new IncomePay();
$limit = ($this->params['pindex']*20).',20';
$incomepaylist = $incomepay->get_listbyuid($session->user['id'], $limit);
if (!empty($incomepaylist)) {
$incomepaynum = $incomepay->count(array('where' => 'uid='.$session->user['id'], 'asArray' => TRUE));
$num = 0;
if($this->params['pindex']*20+20 < $incomepaynum){
$num = $this->params['pindex']+1;
};
foreach($incomepaylist as $k => $v){
$incomepaylist[$k]['addtime'] = date("Y-m-d H:i:s",$v['addtime']);
}
echo json_encode(array('code' => 200, 'incomepaylist' => $incomepaylist, 'num' => $num));
exit;
}
}
echo json_encode(array('code' => 400));
exit;
}
private function checkExsitmail($email) {
$users = Doo::loadModel('users', true);
$arruser = $users->getOne(array('select' => 'id', 'where' => 'useremail=?', 'param' => array($email), 'asArray' => TRUE));
if (empty($arruser)) {
return TRUE;
} else {
return FALSE;
}
}
private function checkExsitMobile($mobile) {
$users = Doo::loadModel('users', true);
$arruser = $users->getOne(array('select' => 'id', 'where' => 'mobile=?', 'param' => array($mobile), 'asArray' => TRUE));
if (empty($arruser)) {
return TRUE;
} else {
return FALSE;
}
}
private function checkUserQuestion($uid) {
$ddd = Doo::loadModel('users', true);
$arruser = $ddd->getOne(array('select' => 'userquestion', 'where' => 'id=?', 'param' => array($uid), 'limit' => '1', 'asArray' => TRUE));
if (empty($arruser['userquestion'])) {
return TRUE;
} else {
return FALSE;
}
}
private function checkUserQuestionExs($uid) {
$ddd = Doo::loadModel('users', true);
$arruser = $ddd->getOne(array('select' => 'userquestion', 'where' => 'id=?', 'param' => array($uid), 'limit' => '1', 'asArray' => TRUE));
if ($arruser['userquestion']) {
return TRUE;
}
}
private static function isUserActive($uid) {
Doo::loadModel('userswitch');
$userswitch = new UserSwitch();
return $userswitch->checkUserStatus($uid);
}
/**
* 发送email
* @param unknown_type $html_templete
* @param unknown_type $subject
* @param unknown_type $toemail
*/
function _mail( $html_templete = "",$subject="",$toemail=""){
require_once './protected/class/class.pop3.php';
require_once './protected/class/class.smtp.php';
require_once './protected/class/class.phpmailer.php';
$mail = new PHPMailer();
$body = $html_templete;
$mail->IsSMTP(); // telling the class to use SMTP
$mail->SMTPAuth = true; // enable SMTP authentication
//$mail->SMTPSecure = "ssl"; // sets the prefix to the servier
$mail->Host = "smtp.exmail.qq.com"; // sets GMAIL as the SMTP server
//$mail->Port = 465; // set the SMTP port for the GMAIL server
//$mail->CharSet = "UTF8";
$mail->Username = "websupport@smartcost.com.cn"; // GMAIL username
$mail->Password = "smartcost2010"; // GMAIL password
$mail->From = "websupport@smartcost.com.cn";
$mail->FromName = "=?UTF-8?B?" . base64_encode('纵横知道·问答') . "?=";
$mail->Subject = $subject;
$mail->MsgHTML($body);
$mail->AddAddress($toemail);
$mail->Send();
}
/**
* 实现接口
* (non-PHPdoc)
* @see BaseLogic::format_email_content()
*/
protected function format_email_content($html_templete, $templete_name, $postArray = 0, $user = 0,$v_oid) {
if ($templete_name == "RECHARGE_SUCCESS") { //纵横通行帐号提醒您:您的帐号成功充值了一笔金额
$str = str_replace ( "%username%",$user[0]['username'] , $html_templete );
$str = str_replace ( "%price%",$postArray , $str );
$str = str_replace ( "%oder%", $v_oid, $str );
$str = str_replace ( "%time%", date('Y-m-d H:i:s', time()), $str );
$result ['templete'] = $str;
$result ['subject'] = "=?UTF-8?B?" . base64_encode ( '纵横通行帐号提醒您:您的帐号成功充值了一笔金额' ) . "?=";
$result ['toemail'] = $user [0]['useremail'];
return $result;
}
}
/**
* ajax短信验证码调用接口
*/
public function checkSms(){
if(isset($_POST['zhmobile'])){
$mobile = trim($_POST['zhmobile']);
}else{
exit(json_encode(array('code' => -1, 'msg' => '请输入手机号')));
}
if(preg_match("/^1[34578]{1}\d{9}$/",$mobile)){
Doo::loadModel('users');
$user = new Users();
$checkuser = $user->getOne(array('where' => 'mobile='.$mobile, 'asArray' => true));
if(!empty($checkuser)){
exit(json_encode(
array('code' => -1, 'msg' => '该手机号码已被注册!')
));
}
Doo::loadModel('mobilecode');
$mobilecode = new mobilecode();
$code = $this->getRandomCheckCode();
$now = time();
$checkresult = $mobilecode->find(array('where' => 'mobile='.$mobile, 'desc' => 'id', 'limit' => 1,'asArray' => true));
if(!empty($checkresult)){
$old = $checkresult['time'];
if($now-$old >= 60){
$sendresult = $this->sendSms($mobile,$code);
// $sendresult = true;
if($sendresult){
$mobilecode->mobile = $mobile;
$mobilecode->code = $code;
$mobilecode->time = $now;
$mobilecode->insert();
exit(json_encode(
array('code' => 1, 'msg' => '发送成功')
));
}else{
exit(json_encode(
array('code' => -1, 'msg'=> $this->errorMsg)
));
}
}else{
exit(json_encode(
array('code' => -1, 'msg' => '60s内无法再次发送验证码')
));
}
}else{
$sendresult = $this->sendSms($mobile,$code);
// $sendresult = true;
if($sendresult){
$mobilecode->mobile = $mobile;
$mobilecode->code = $code;
$mobilecode->time = $now;
$mobilecode->insert();
exit(json_encode(
array('code' => 1, 'msg' => '发送成功')
));
}else{
exit(json_encode(
array('code' => -1, 'msg'=> $this->errorMsg)
));
}
}
}else{
exit(json_encode(
array('code' => -1, 'msg' => '请正确填写您的手机号码')
));
}
}
/**
* ajax短信修改密码验证码调用接口
*/
function chpwdsms(){
if(isset($_POST['zhmobile'])){
$mobile = trim($_POST['zhmobile']);
}else{
exit(json_encode(array('code' => -1, 'msg' => '请输入手机号')));
}
if(preg_match("/^1[34578]{1}\d{9}$/",$mobile)){
Doo::loadModel('mobilecode');
$mobilecode = new mobilecode();
$code = $this->getRandomCheckCode();
$now = time();
$checkresult = $mobilecode->find(array('where' => 'mobile='.$mobile, 'desc' => 'id', 'limit' => 1,'asArray' => true));
if(!empty($checkresult)){
$old = $checkresult['time'];
if($now-$old >= 60){
$sendresult = $this->sendSms($mobile,$code);
// $sendresult = true;
if($sendresult){
$mobilecode->mobile = $mobile;
$mobilecode->code = $code;
$mobilecode->time = $now;
$mobilecode->insert();
exit(json_encode(
array('code' => 1, 'msg' => '发送成功')
));
}else{
exit(json_encode(
array('code' => -1, 'msg'=> $this->errorMsg)
));
}
}else{
exit(json_encode(
array('code' => -1, 'msg' => '60s内无法再次发送验证码')
));
}
}else{
$sendresult = $this->sendSms($mobile,$code);
// $sendresult = true;
if($sendresult){
$mobilecode->mobile = $mobile;
$mobilecode->code = $code;
$mobilecode->time = $now;
$mobilecode->insert();
exit(json_encode(
array('code' => 1, 'msg' => '发送成功')
));
}else{
exit(json_encode(
array('code' => -1, 'msg'=> $this->errorMsg)
));
}
}
}else{
exit(json_encode(
array('code' => -1, 'msg' => '请正确填写您的手机号码')
));
}
}
function checkgetpwdsms(){
if(isset($_POST['zhmobile'])){
$mobile = trim($_POST['zhmobile']);
}else{
exit(json_encode(array('code' => -1, 'msg' => '请输入手机号')));
}
if(preg_match("/^1[34578]{1}\d{9}$/",$mobile)){
Doo::loadModel('users');
$user = new Users();
$checkuser = $user->getOne(array('where' => 'mobile='.$mobile, 'asArray' => true));
if(empty($checkuser)){
exit(json_encode(
array('code' => -1, 'msg' => '该手机号码未在纵横通行账号注册!')
));
}
Doo::loadModel('mobilecode');
$mobilecode = new mobilecode();
$code = $this->getRandomCheckCode();
$now = time();
$checkresult = $mobilecode->find(array('where' => 'mobile='.$mobile, 'desc' => 'id', 'limit' => 1,'asArray' => true));
if(!empty($checkresult)){
$old = $checkresult['time'];
if($now-$old >= 60){
$sendresult = $this->sendSms($mobile,$code);
// $sendresult = true;
if($sendresult){
$mobilecode->mobile = $mobile;
$mobilecode->code = $code;
$mobilecode->time = $now;
$mobilecode->insert();
exit(json_encode(
array('code' => 1, 'msg' => '发送成功')
));
}else{
exit(json_encode(
array('code' => -1, 'msg'=> $this->errorMsg)
));
}
}else{
exit(json_encode(
array('code' => -1, 'msg' => '60s内无法再次发送验证码')
));
}
}else{
$sendresult = $this->sendSms($mobile,$code);
// $sendresult = true;
if($sendresult){
$mobilecode->mobile = $mobile;
$mobilecode->code = $code;
$mobilecode->time = $now;
$mobilecode->insert();
exit(json_encode(
array('code' => 1, 'msg' => '发送成功')
));
}else{
exit(json_encode(
array('code' => -1, 'msg'=> $this->errorMsg)
));
}
}
}else{
exit(json_encode(
array('code' => -1, 'msg' => '请正确填写您的手机号码')
));
}
}
/**
* 实现短信验证码接口
*
*/
protected function sendSms($number,$code){
$send = array(
'apikey' => 'fb5ef483e44b9556512a9febef376051',
'mobile' => $number,
'text' => '【纵横通行账号】您的验证码是'.$code.',15分钟内有效。'
);
$data = http_build_query($send);
$res = json_decode($this->_httpClient($data));
$resArr = $this->objectToArray($res);
if (!empty($resArr) && $resArr["code"] == 0) return true;
else {
if (empty($this->errorMsg)) $this->errorMsg = isset($resArr["msg"]) ? $resArr["msg"] : '未知错误';
return false;
}
}
//对象转数组,使用get_object_vars返回对象属性组成的数组
function objectToArray($array){
if(is_object($array)) {
$array = (array)$array;
} if(is_array($array)) {
foreach($array as $key=>$value) {
$array[$key] = $this->objectToArray($value);
}
}
return $array;
}
/**
* POST方式访问短信接口
* @param string $data
* @return mixed
*/
private function _httpClient($data) {
$sms_api_url = 'http://sms.haotingyun.com/v2/sms/single_send.json';
try {
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Accept:text/plain;charset=utf-8', 'Content-Type:application/x-www-form-urlencoded','charset=utf-8'));
curl_setopt($ch, CURLOPT_URL,$sms_api_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$res = curl_exec($ch);
curl_close($ch);
return $res;
} catch (Exception $e) {
$this->errorMsg = $e->getMessage();
return false;
}
}
/**
* 随机生成验证码
*/
function getRandomCheckCode() {
$chars = '0123456789';
mt_srand((double)microtime()*1000000*getmypid());
$CheckCode="";
while(strlen($CheckCode)<6)
$CheckCode.=substr($chars,(mt_rand()%strlen($chars)),1);
return $CheckCode;
}
// private static function isUserActive($uid) {
// Doo::loadModel('userswitch');
// $userswitch = new UserSwitch();
// return $userswitch->checkUserStatus($uid);
// }
}
?>