/** * (non-PHPdoc) * @see \tfc\mvc\interfaces\Action::run() */ public function run() { $install = DIR_ROOT . DS . 'webroot' . DS . 'install.php'; $this->assign('install', $install); $sysInfo = Options::getSysInfo(); $devInfo = Options::getDevInfo(); $this->assign('sys_info', $sysInfo); $this->assign('dev_info', $devInfo); $this->render(); }
/** * 发送邮件 * @param string $toMail * @param string $subject * @param string $body * @return boolean */ public static function sendMail($toMail, $subject, $body) { $smtp = null; if ($smtp === null) { $smtp = new Smtp(Options::getSmtpHost(), Options::getSmtpUsername(), Options::getSmtpPassword()); } try { return $smtp->sendMail($toMail, $subject, $body); } catch (ErrorException $e) { Log::warning(sprintf('Tools sendMail Failed, SmtpHost: "%s", Message: "%s"', $smtp->getHost(), $e->getMessage()), $e->getCode(), __METHOD__); } return false; }
/** * (non-PHPdoc) * @see \tfc\mvc\interfaces\Action::run() */ public function run() { $req = Ap::getRequest(); $cookie = new Cookie('cookie'); $appid = Cfg::getApp('appid', 'qq', 'extlogin'); $appkey = Cfg::getApp('appkey', 'qq', 'extlogin'); $callback = Options::getSiteUrl() . '/index.php?r=member/data/qqcallback'; if ($cookie->get('state') !== $req->getParam('state')) { exit('The state does not match. You may be a victim of CSRF.'); } $tokenUrl = 'https://graph.qq.com/oauth2.0/token?grant_type=authorization_code' . '&client_id=' . $appid . '&redirect_uri=' . urlencode($callback) . '&client_secret=' . $appkey . '&code=' . $req->getParam('code'); $response = file_get_contents($tokenUrl); if (strpos($response, 'callback') !== false) { $lpos = strpos($response, '('); $rpos = strrpos($response, ')'); $response = substr($response, $lpos + 1, $rpos - $lpos - 1); $msg = json_decode($response); if (isset($msg->error)) { echo '<h3>error:</h3>' . $msg->error; echo '<h3>msg :</h3>' . $msg->error_description; exit; } } $params = array(); parse_str($response, $params); $graphUrl = 'https://graph.qq.com/oauth2.0/me?access_token=' . $params['access_token']; $str = file_get_contents($graphUrl); if (strpos($str, 'callback') !== false) { $lpos = strpos($str, '('); $rpos = strrpos($str, ')'); $str = substr($str, $lpos + 1, $rpos - $lpos - 1); } $user = json_decode($str); if (isset($user->error)) { echo '<h3>error:</h3>' . $user->error; echo '<h3>msg :</h3>' . $user->error_description; exit; } $openid = $user->openid; $mod = Model::getInstance('Account', 'member'); $ret = $mod->extlogin(DataAccount::PARTNER_QQ, $openid); if ($ret['err_no'] === DataAccount::SUCCESS_LOGIN_NUM) { $httpReferer = HttpCookie::get('http_referer', 'index.php'); HttpCookie::remove('http_referer'); Ap::getResponse()->location($httpReferer); } else { Ap::getResponse()->location('index.php?r=member/show/login'); } }
/** * (non-PHPdoc) * @see \tfc\mvc\interfaces\Action::run() */ public function run() { $cookie = new Cookie('cookie'); $httpReferer = Ap::getRequest()->getTrim('http_referer'); if ($httpReferer === '') { $httpReferer = 'index.php'; } HttpCookie::add('http_referer', $httpReferer); $appid = Cfg::getApp('appid', 'wechat', 'extlogin'); $callback = Options::getSiteUrl() . '/index.php?r=member/data/wechatcallback'; $scope = 'snsapi_base'; $state = md5(uniqid(rand(), TRUE)); //CSRF protection $cookie->add('state', $state); $loginUrl = 'https://open.weixin.qq.com/connect/oauth2/authorize?response_type=code' . '&appid=' . $appid . '&redirect_uri=' . urlencode($callback) . '&state=' . $state . '&scope=' . $scope . '#wechat_redirect'; Ap::getResponse()->location($loginUrl); }
/** * (non-PHPdoc) * @see \tfc\mvc\interfaces\Action::run() */ public function run() { $cookie = new Cookie('cookie'); $httpReferer = Ap::getRequest()->getTrim('http_referer'); if ($httpReferer === '') { $httpReferer = 'index.php'; } HttpCookie::add('http_referer', $httpReferer); $appid = Cfg::getApp('appid', 'qq', 'extlogin'); $callback = Options::getSiteUrl() . '/index.php?r=member/data/qqcallback'; $scope = 'get_user_info'; $state = md5(uniqid(rand(), TRUE)); //CSRF protection $cookie->add('state', $state); $loginUrl = 'https://graph.qq.com/oauth2.0/authorize?response_type=code' . '&client_id=' . $appid . '&redirect_uri=' . urlencode($callback) . '&state=' . $state . '&scope=' . $scope; Ap::getResponse()->location($loginUrl); }
/** * 生成文字水印 * @param string $source * @param string $toPath * @return string|false */ public static function water($source, $toPath = null) { $type = Options::getWaterMarkType(); if ($type !== DataOptions::WATER_MARK_TYPE_IMGDIR && $type !== DataOptions::WATER_MARK_TYPE_TEXT) { return false; } $position = Options::getWaterMarkPosition(); if ($position < 1 || $position > 9) { return false; } $offset = 1; if ($toPath === null) { $toPath = dirname($source) . DS . 'water_' . basename($source); } if ($type === DataOptions::WATER_MARK_TYPE_TEXT) { $text = Options::getWaterMarkText(); if ($text !== '') { $fontFile = Cfg::getApp('fontfile'); if (ImageManager::textWater($source, $text, $fontFile, $toPath, $position, $offset)) { return $toPath; } } } elseif ($type === DataOptions::WATER_MARK_TYPE_IMGDIR) { $water = Options::getWaterMarkImgdir(); if ($water !== '') { $pct = max(Options::getWaterMarkPct(), 0); if (ImageManager::imageWater($source, $water, $toPath, $position, $offset, $pct)) { return $toPath; } } } return false; }
/** * 将常用数据设置到模板变量中 * @return void */ public function assignSystem() { $viw = Mvc::getView(); $viw->assign('app', APP_NAME); $viw->assign('module', Mvc::$module); $viw->assign('controller', Mvc::$controller); $viw->assign('action', Mvc::$action); $viw->assign('sidebar', Mvc::$module . '/' . Mvc::$action . '_sidebar'); $viw->assign('log_id', Log::getId()); $viw->assign('language', Ap::getLanguageType()); $viw->assign('urlHelper', UrlHelper::getInstance()); $viw->assign('site_name', Options::getSiteName()); if (!isset($viw->meta_title)) { $viw->assign('meta_title', Options::getMetaTitle()); } if (!isset($viw->meta_keywords)) { $viw->assign('meta_keywords', Options::getMetaKeywords()); } if (!isset($viw->meta_description)) { $viw->assign('meta_description', Options::getMetaDescription()); } $viw->assign('powerby', Options::getPowerby()); $viw->assign('stat_code', Options::getStatCode()); if (($wfBackTrace = Registry::get('warning_backtrace')) !== null) { $viw->assign('warning_backtrace', $wfBackTrace); } }
/** * 发送邮件 * @param string $memberMail * @return integer */ public function sendMail($memberMail) { $ret = $this->encryptMail($memberMail); if ($ret['err_no'] !== DataRepwd::SUCCESS_REPWD_NUM) { $ret['err_msg'] = DataRepwd::getErrMsgByErrNo($ret['err_no']); unset($ret['ciphertext']); return $ret; } $url = Options::getSiteUrl() . '?r=member/show/repwdmail&cipher=' . $ret['ciphertext']; $subject = Lang::_('SRV_FILTER_REPWD_REPWD_LABEL'); $body = $subject . ': ' . $url; if (!Tools::sendMail($memberMail, $subject, $body)) { $errNo = DataRepwd::ERROR_SEND_MAIL_FAILED; Log::warning(sprintf('Repwd send mail failed, member_mail "%s"', $memberMail), $errNo, __METHOD__); return array('err_no' => $errNo, 'err_msg' => DataRepwd::getErrMsgByErrNo($errNo)); } $mailHost = substr($memberMail, strpos($memberMail, '@') + 1); $errNo = DataRepwd::SUCCESS_REPWD_NUM; $errMsg = Lang::_('SRV_FILTER_REPWD_SEND_MAIL_SUCCESS') . ' ' . '<a href="http://' . $mailHost . '">' . $mailHost . '</a>'; return array('err_no' => $errNo, 'err_msg' => $errMsg); }