Пример #1
0
 /**
  * @param $token
  * @param null $user_agent_string
  * @param string $intent save, kill or Update session
  * @param stringuser_id
  * @return bool success
  */
 public static function alter($token, $user_agent_string = null, $intent, $user_id = null)
 {
     $sid = filter_var($token, FILTER_SANITIZE_STRING);
     $uas = filter_var($user_agent_string, FILTER_SANITIZE_STRING);
     $uid = Helper::word($user_id);
     $status = false;
     $sql = '';
     switch ($intent) {
         case 'save':
             $sql = 'INSERT INTO session (user_id, token, user_agent_string, expires) VALUES (:uid, :sid , :uas, DATE_ADD(NOW(), INTERVAL 1 MINUTE ))';
             setcookie('_ut35', $sid, COOKIE_LIFE);
             $_SESSION['uid'] = $user_id;
             break;
         case 'kill':
             setcookie('_ut35', null, time() - 1000);
             $sql = 'DELETE FROM session WHERE token = :sid  AND user_agent_string = :uas';
             break;
         case 'update':
             $sql = 'UPDATE session SET token = :sid, expires = DATE_ADD(NOW(), INTERVAL 2 MINUTE) WHERE token = :sid AND user_agent_string = :uas';
             // $_SESSION['uid'] = $user_id;
             setcookie('_ut35', $sid, COOKIE_LIFE);
             break;
         default:
             break;
     }
     try {
         $dbh = DBWorker::connect();
         $stmt = $dbh->prepare($sql);
         $stmt->bindParam(":sid", $sid, PDO::PARAM_STR);
         $stmt->bindParam(":uas", $uas, PDO::PARAM_STR);
         if ($intent == 'save') {
             $stmt->bindParam(':uid', $uid, PDO::PARAM_STR);
         }
         $stmt->execute();
         $status = $stmt->rowCount() > 0;
         DBWorker::disconnect($dbh);
     } catch (Exception $ex) {
         die($ex->getMessage());
     }
     return $status;
 }