/** * (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); }
/** * (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); }
/** * 处理提交的安装表单 * * @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()); }
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; }
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); } }
/** * 显示注册页面 * * @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(); }
/** * 处理异步提交过来的站点配置的修改 * * @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); }
/** * 添加板块的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); }