Example #1
0
 /**
  * (non-PHPdoc)
  *
  * @see \liuguang\mvc\LSession::saveSesData()
  *
  */
 protected function saveSesData($sid, DataMap $sesData, $isNew, $expire)
 {
     if (!$isNew) {
         $expire = time() + $this->cookieLife;
     }
     $this->mem->set($this->pre . $sid, $sesData->toArray(), MEMCACHE_COMPRESSED, $expire);
 }
Example #2
0
 /**
  * (non-PHPdoc)
  *
  * @see \liuguang\mvc\LSession::saveSesData()
  *
  */
 protected function saveSesData($sid, DataMap $sesData, $isNew, $expire)
 {
     $encoded = addslashes(serialize($sesData->toArray()));
     if ($isNew) {
         $sql = sprintf('INSERT INTO %s(sid,encoded,expire) VALUES(\'%s\',\'%s\',%d)', $this->sessionTb, $sid, $encoded, $expire);
     } else {
         $sql = 'UPDATE ' . $this->sessionTb . ' SET encoded=\'' . $encoded . '\' WHERE sid=\'' . $sid . '\'';
     }
     $this->db->exec($sql);
 }
Example #3
0
 /**
  * 处理提交的安装表单
  *
  * @return void
  */
 public function doAction()
 {
     $installModel = new InstallModel($this);
     $errArr = array();
     $installStep = 0;
     if ($installModel->hasInstalled()) {
         $installStep = 3;
         $this->showInstallForm($installStep, $errArr);
         return;
     }
     if (!$installModel->statReady()) {
         $errArr[] = $installModel->getErrMsg();
     }
     // 检测post提交的数据
     $user = new UserModel($this);
     $postData = new DataMap($_POST);
     $username = $postData->get('username', '');
     $nickname = $postData->get('nickname', '');
     $email = $postData->get('email', '');
     if (!$user->isUsername($username)) {
         $errArr[] = $user->getErrMsg();
     }
     if (!$user->isNickname($nickname)) {
         $errArr[] = $user->getErrMsg();
     }
     if (!$user->isEmail($email)) {
         $errArr[] = $user->getErrMsg();
     }
     $pass1 = $postData->get('pass1', '');
     $pass2 = $postData->get('pass2', '');
     if ($pass1 != $pass2) {
         $errArr[] = '两次输入的密码不一致';
     }
     if (!$user->isPass($pass1)) {
         $errArr[] = $user->getErrMsg();
     }
     if (!empty($errArr)) {
         $installStep = 1;
         $this->showInstallForm($installStep, $errArr);
         return;
     }
     // 执行安装操作
     $installModel->initDb();
     // 添加管理员账号
     $uid = $user->addAccount($username, $nickname, $pass1, $email);
     if ($uid == -1) {
         $installStep = 1;
         $this->showInstallForm($installStep, array('添加用户账号失败'));
         return;
     }
     // 添加管理员权限
     $user->addSuperAdmin($uid);
     $installStep = 2;
     $this->showInstallForm($installStep, array());
 }
Example #4
0
 public function parseUrl($url)
 {
     $data = array();
     $urlData = new DataMap($data);
     $url = parse_url($url, PHP_URL_PATH);
     if ($url == 'null' || $url == '/' || $url == '') {
         $urlData->set($this->cKey, $this->defaultC);
         $urlData->set($this->aKey, $this->defaultA);
     } else {
         // 判断url格式是否正确
         if (!preg_match('/^(\\/[^\\/]{1,32}){1,6}\\/?$/', $url)) {
             $urlData->set($this->cKey, $this->err404C);
             $urlData->set($this->aKey, $this->defaultA);
             return $urlData;
         }
         // 安装界面和处理安装的url
         if (in_array($url, array('/install', '/install/'))) {
             $urlData->set($this->cKey, 'web/Install');
             $urlData->set($this->aKey, 'index');
         } elseif (in_array($url, array('/install/do', '/install/do/'))) {
             $urlData->set($this->cKey, 'web/Install');
             $urlData->set($this->aKey, 'do');
         } elseif (in_array($url, array('/signin', '/signin/'))) {
             $urlData->set($this->cKey, 'web/SignIn');
             $urlData->set($this->aKey, 'index');
         } elseif (in_array($url, array('/signin/do', '/signin/do/'))) {
             $urlData->set($this->cKey, 'web/SignIn');
             $urlData->set($this->aKey, 'do');
         } elseif (in_array($url, array('/signup', '/signup/'))) {
             $urlData->set($this->cKey, 'web/SignUp');
             $urlData->set($this->aKey, 'index');
         } elseif (in_array($url, array('/signup/do', '/signup/do/'))) {
             $urlData->set($this->cKey, 'web/SignUp');
             $urlData->set($this->aKey, 'do');
         } elseif (in_array($url, array('/forgot', '/forgot/'))) {
             $urlData->set($this->cKey, 'web/Forgot');
             $urlData->set($this->aKey, 'index');
         } elseif (preg_match('/^\\/captcha(\\/([^\\/]+\\/?)?)?$/', $url)) {
             $urlData->set($this->cKey, 'web/Captcha');
             $urlData->set($this->aKey, 'index');
         } elseif (preg_match('/^\\/signout\\/([a-z0-9]{32})$/', $url, $data1)) {
             $urlData->set($this->cKey, 'web/SignOut');
             $urlData->set($this->aKey, 'index');
             $urlData->set('rand', $data1[1]);
         } elseif (in_array($url, array('/new', '/new/'))) {
             $urlData->set($this->cKey, 'web/Topic');
             $urlData->set($this->aKey, 'postNew');
         } elseif (preg_match('/^\\/member\\/([^\\/]+)(\\/([^\\/]+))?$/', $url, $data1)) {
             $urlData->set($this->cKey, 'web/UserCenter');
             $urlData->set($this->aKey, 'index');
             $urlData->set('username', $data1[1]);
             if (isset($data1[3])) {
                 $urlData->set($this->aKey, $data1[3]);
             }
         } elseif (preg_match('/^\\/hadmin(\\/([^\\/]+))?$/', $url, $data1)) {
             $urlData->set($this->cKey, 'web/Admin');
             $urlData->set($this->aKey, 'index');
             if (isset($data1[1])) {
                 $urlData->set($this->aKey, $data1[2]);
             }
         } else {
             $urlData->set($this->cKey, $this->err404C);
             $urlData->set($this->aKey, $this->defaultA);
         }
     }
     return $urlData;
 }
Example #5
0
 public function doAction()
 {
     $this->forceInstall();
     $session = new USession($this);
     $sessionData = $session->getSessionData();
     //判断用户是否已登录
     if ($session->getUid() != 0) {
         header('Location: /');
         return;
     }
     if ($_SERVER['REQUEST_METHOD'] != 'POST') {
         $this->showLoginForm();
         return;
     }
     $postData = new DataMap($_POST);
     $user = new UserModel($this);
     $errArr = array();
     $username = $postData->get('username', '');
     $pass = $postData->get('pass', '');
     $rcodePost = $postData->get('rcode', '');
     $rcode = $sessionData->get('rcode', '');
     $sessionData->set('rcode', '');
     $urlPost = $postData->get('url', '');
     $loginType = 1;
     if ($user->isUsername($username)) {
         $loginType = 1;
     } elseif ($user->isEmail($username)) {
         $loginType = 2;
     } else {
         $errArr[] = '请输入正确的用户名或者邮箱地址';
     }
     if (!$user->isPass($pass)) {
         $errArr[] = $user->getErrMsg();
     }
     if ($rcode == '') {
         $errArr[] = '请打开验证码图片显示';
     }
     if (strcasecmp($rcodePost, $rcode) != 0) {
         $errArr[] = '验证码输入有误';
     }
     if (!empty($errArr)) {
         $this->showLoginForm('', $errArr);
         return;
     }
     // 判断用户名是否存在
     if ($loginType == 1 && !$user->isUsernameExists($username)) {
         $errArr[] = '用户名' . $username . '不存在';
     }
     if ($loginType == 2 && !$user->isEmailExists($username)) {
         $errArr[] = '邮箱' . $username . '不存在';
     }
     if (!empty($errArr)) {
         $this->showLoginForm('', $errArr);
         return;
     }
     $uid = $user->authPass($username, $pass, $loginType);
     if ($uid == -1) {
         if ($loginType == 1) {
             $errArr[] = '用户名或密码错误';
         } elseif ($loginType == 2) {
             $errArr[] = '邮箱或密码错误';
         }
         $this->showLoginForm('', $errArr);
     } else {
         $session->setUid($uid);
         $session->updateLifetime(30 * 24 * 3600);
         $url = $postData->get('url', '');
         if (empty($url)) {
             $urlHandler = $this->getApp()->getUrlHandler();
             $url = $urlHandler->createUrl('web/Index', 'index', array(), false);
         }
         header('Location: ' . $url);
     }
 }
Example #6
0
 /**
  * 显示注册页面
  *
  * @param string $signMsg
  *        	提示消息
  * @param array $signErrArr
  *        	所有的错误数组
  * @return void
  */
 private function showRegForm($signMsg = '', array $signErrArr = array())
 {
     $urlHandler = $this->getApp()->getUrlHandler();
     $doRegUrl = $urlHandler->createUrl('web/SignUp', 'do', array());
     $captchaUrl = $urlHandler->createUrl('web/Captcha', 'index', array());
     $captchaUrlT = $urlHandler->createUrl('web/Captcha', '--rand--', array(), false);
     $siteInfoM = new SiteModel($this);
     $siteInfo = $siteInfoM->getSiteInfo(array('sitename'));
     $title = $siteInfo['sitename'] . ' › 注册';
     $postData = new DataMap($_POST);
     $username = $postData->get('username', '');
     $nickname = $postData->get('nickname', '');
     $email = $postData->get('email', '');
     Templatel::tplStart();
     include Templatel::view('/reg.html');
     Templatel::tplEnd();
 }
Example #7
0
 /**
  * 处理异步提交过来的站点配置的修改
  * 
  * @return void
  */
 public function saveConfAction()
 {
     $this->forceInstall();
     $session = new USession($this);
     $uid = $session->getUid();
     $urlHandler = $this->getApp()->getUrlHandler();
     if ($uid == 0) {
         $signInUrl = $urlHandler->createUrl('web/SignIn', 'index', array());
         header('Location: ' . $signInUrl);
         return;
     }
     $user = new UserModel($this);
     $isAdmin = $user->isSuperAdmin($uid);
     if (!$isAdmin) {
         $this->needAdmin();
         return;
     }
     $postData = new DataMap($_POST);
     $sitename = $postData->get('sitename', '');
     $noticeOn = $postData->get('notice_on', 0);
     $noticeText = $postData->get('notice_text', '');
     $openCompress = $postData->get('open_compress', 0);
     $siteM = new SiteModel($this);
     $newSets = array();
     $newSets['sitename'] = $sitename;
     $newSets['notice_on'] = $noticeOn == 0 ? '0' : '1';
     $newSets['notice_text'] = $noticeText;
     $newSets['open_compress'] = $openCompress == 0 ? '0' : '1';
     $siteM->updateSiteInfo($newSets);
     $ajaxReturn = array('success' => true);
     $this->jsonReturn($ajaxReturn);
 }
Example #8
0
 /**
  * 添加板块的ajax异步请求
  * 
  * @return void
  */
 public function addbkAction()
 {
     $this->forceInstall();
     $session = new USession($this);
     $uid = $session->getUid();
     $urlHandler = $this->getApp()->getUrlHandler();
     if ($uid == 0) {
         $signInUrl = $urlHandler->createUrl('web/SignIn', 'index', array());
         header('Location: ' . $signInUrl);
         return;
     }
     $user = new UserModel($this);
     $isAdmin = $user->isSuperAdmin($uid);
     if (!$isAdmin) {
         $this->needAdmin();
         return;
     }
     $bkM = new BkModel($this);
     $postData = new DataMap($_POST);
     $pid = intval($postData->get('pid', 0));
     $bkname = $postData->get('bkname', '新节点');
     //判断父节点pid是否存在
     if (!$bkM->bkIdExists($pid)) {
         $arr = array('success' => false);
     } else {
         $bkid = $bkM->createBk($pid, $bkname);
         $arr = array('success' => true);
         $arr['nodeInfo'] = array('id' => $bkid, 'pId' => $pid, 'isParent' => false, 'name' => $bkname);
     }
     $this->jsonReturn($arr);
 }