/** * Populates the current user object with the information obtained from cookie. * This method is used when automatic login ({@link allowAutoLogin}) is enabled. * The user identity information is recovered from cookie. * Sufficient security measures are used to prevent cookie data from being tampered. * @see saveToCookie */ protected function restoreFromCookie() { $app = Yii::app(); $cookie = $app->getRequest()->getCookies()->itemAt($this->getStateKeyPrefix()); if ($cookie && !empty($cookie->value) && ($data = $app->getSecurityManager()->validateData($cookie->value)) !== false) { $data = @unserialize($data); if (is_array($data) && isset($data[1], $data[2], $data[3])) { list($id, $name, $duration, $states) = $data; if (isset($id)) { if ($this->beforeLogin($id, $states, true)) { $this->changeIdentity($id, $name, $states); if ($this->autoRenewCookie) { $cookie->expire = time() + $duration; $app->getRequest()->getCookies()->add($cookie->name, $cookie); } $this->afterLogin(true); } } else { //Guest vistor,read info from cookie $this->changeIdentity($id, $name, $states); if ($this->autoRenewCookie) { $cookie->expire = time() + $duration; $app->getRequest()->getCookies()->add($cookie->name, $cookie); } } } } else { //new vistor setup coookie info $names['cart_ID'] = true; $names['guest_ID'] = true; $names['currency_ID'] = true; $guest_ID = guest::AddGuest(); $currency_ID = 2; $cart_ID = cart::AddCart($guest_ID, $currency_ID); $this->setState('__states', $names); $this->setState('cart_ID', $cart_ID); $this->setState('guest_ID', $guest_ID); $this->setState('currency_ID', $currency_ID); $this->saveToCookie(31104000); } }