Пример #1
0
 /**
  * Generates a full readable url.
  *
  * @param string $url				The url parameters
  * @param boolean $appendSession	Append session id to url
  *
  * @return string
  */
 public static function url($url, $appendSession = false)
 {
     $session = Core::getRequest()->getGET("sid");
     if (!COOKIE_SESSION && $appendSession && $session) {
         if (Str::inString("?", $url)) {
             $url .= "?sid=" . $session;
         } else {
             $url .= "&sid=" . $session;
         }
     }
     $lang = Core::getRequest()->getPOST("lang") ? Core::getRequest()->getPOST("lang") : Core::getRequest()->getGET("lang");
     if (self::APPEND_LANG_TO_URL && $lang) {
         if (Str::inString("?", $url)) {
             $url = $url . "?lang=" . $lang;
         } else {
             $url = $url . "&lang=" . $lang;
         }
     } else {
         if (!Link::isExternal($url) && !preg_match("~^" . BASE_URL . "~si", $url) && self::APPEND_HOST_PATH) {
             $url = BASE_URL . $url;
         }
     }
     return $url;
 }
Пример #2
0
 /**
  * Start a new session and destroy old sessions.
  *
  * @return Login
  */
 public function startSession()
 {
     if (!$this->dataChecked) {
         $this->checkData();
     }
     // Disables old sessions.
     if ($this->cacheActive) {
         Core::getCache()->cleanUserCache($this->userid);
     }
     Core::getQuery()->update("sessions", array("logged" => 0), "userid = ?", array($this->userid));
     // Start new session.
     $sessionSeed = Str::encode((string) microtime(1));
     $this->sid = Str::substring($sessionSeed, 0, $this->getSessionLength());
     unset($sessionSeed);
     $spec = array("sessionid" => $this->sid, "userid" => $this->userid, "ipaddress" => IPADDRESS, "useragent" => isset($_SERVER["HTTP_USER_AGENT"]) ? $_SERVER["HTTP_USER_AGENT"] : "", "time" => TIME, "logged" => 1);
     Core::getQuery()->insert("sessions", $spec);
     if ($this->canLogin) {
         if (COOKIE_SESSION) {
             Core::getRequest()->setCookie("sid", $this->sid, $this->getCookieExpire());
             $this->sessionUrl = $this->redirection;
         } else {
             if (Str::inString("?", $this->redirection)) {
                 $this->sessionUrl = $this->redirection . "&sid=" . $this->sid . "&login=true";
             } else {
                 $this->sessionUrl = $this->redirection . "?sid=" . $this->sid . "&login=true";
             }
         }
         if ($this->cacheActive) {
             Core::getCache()->buildUserCache($this->sid);
         }
         Hook::event("StartSession", array($this, $this->sessionUrl));
         if ($this->redirectOnSuccess) {
             doHeaderRedirection($this->sessionUrl, true);
         }
     } else {
         $this->loginFailed("CANNOT_LOGIN");
     }
     return $this;
 }
Пример #3
0
 /**
  * Sets Location header and response code. Forces replacement of any prior
  * redirects.
  *
  * @param string $url				URL to redirect
  * @param boolean $appendSession	Append the session string
  *
  * @return void
  */
 public static function redirect($url, $appendSession = true)
 {
     if (Link::isExternal($url) || Str::inString("http://", $url)) {
         $path = $url;
     } else {
         if ($appendSession && !Str::inString("sid=", $url) && URL_SESSION) {
             !Str::inString("?", $url) ? $url .= "?sid=" . SID : ($url .= "&sid=" . SID);
         } else {
             $path = HTTP_HOST . REQUEST_DIR . $url;
         }
     }
     self::set("Location", $path);
     self::statusCode(302);
     self::send();
     return exit;
 }
Пример #4
0
/**
 * Checks a string for valid email address.
 *
 * @param string
 *
 * @return boolean
 */
function checkEmail($mail)
{
    if (!preg_match("#^[a-zA-Z0-9-]+([._a-zA-Z0-9.-]+)*@[a-zA-Z0-9.-]+\\.([a-zA-Z]{2,4})\$#is", $mail)) {
        return false;
    }
    $banned = Core::getConfig()->get("BANNED_EMAILS");
    if (!empty($banned)) {
        $banned = Arr::trim(explode(",", $banned));
        foreach ($banned as $expr) {
            if (Str::inString($expr, $mail)) {
                return false;
            }
        }
    }
    return true;
}
Пример #5
0
 /**
  * @param array $options
  * @return string
  */
 protected function serialize($options)
 {
     if (!empty($options)) {
         $hasKeys = Str::inString("=>", $options);
         $options = Arr::trim(explode(",", $options));
         $opts = $options;
         if ($hasKeys) {
             $opts = array();
             $size = count($options);
             for ($i = 0; $i < $size; $i++) {
                 $cell = Arr::trim(explode("=>", $options[$i]));
                 $opts[$cell[0]] = $cell[1];
             }
         }
         return serialize($opts);
     }
     return "";
 }