Exemple #1
0
 /**
  * Проверка сессии в АЦ
  * @param string $module имя модуля
  * @param bool $onlylink только получение ссылки?(тобишь без переадресаций)
  * @param bool $hardmode для АЦ, к примеру. Проверяет SID, даже если отсутствует
  * @return bool в АЦ?
  */
 public function check_inadmin($module, $onlylink = false, $hardmode = false)
 {
     $baseurl = globals::g('baseurl');
     if ($hardmode) {
         $onlylink = false;
     } elseif (!$this->perms['can_acp'] || !$_REQUEST['sid'] && !$onlylink) {
         return false;
     }
     $sid = get_formkey(null, "sid");
     if ($_SESSION['sid'] != $sid) {
         $_SESSION['sid'] = '';
     }
     if (!$_REQUEST['sid'] && $_SESSION['sid']) {
         // Дабы не входить снова, если SID отсутствует
         $sid = $_SESSION['sid'];
     }
     // Но переадресация нужна
     $afile = $baseurl . "admincp.php?sid=";
     $eadmin_file = $afile . $sid;
     globals::s('eadmin_file', $eadmin_file);
     if (!$onlylink) {
         try {
             check_formkey("sid");
         } catch (EngineException $e) {
             if ($hardmode && (!$_SESSION['sid'] || $_REQUEST['sid'])) {
                 $this->acp_login($afile);
             }
             furl::o()->location($eadmin_file);
         }
     }
     $this->acp_modules();
     if ($module && $this->perms['can_acp'] == 1) {
         if (!in_array($module, (array) $this->perms['acp_modules'])) {
             if (!$onlylink) {
                 furl::o()->location($eadmin_file);
             } else {
                 return false;
             }
         }
     }
     tpl::o()->assign("admin_sid", 'sid=' . $sid);
     tpl::o()->assign("eadmin_file", $eadmin_file);
     return true;
 }
Exemple #2
0
/**
 * Проверка ключа формы для защиты от CSRF
 * @param string $var имя ключа
 * @return bool true, если ключ верен
 * @throws EngineException 
 */
function check_formkey($var = "fk")
{
    if (users::o()->check_adminmode()) {
        return true;
    }
    if (!$var) {
        $var = "fk";
    }
    $ret = get_formkey(null, $var) == $_REQUEST[$var];
    if (!$ret) {
        throw new EngineException("bad_check_key");
    }
    return $ret;
}