예제 #1
0
/**
 * ユーザのオートログイン
 *
 * @param string $session_id
 *
 * @return array
 */
function service_user_autologin($session_id)
{
    // セッションを取得
    $users = select_sessions(array('select' => 'user_id, keep', 'where' => array('id = :id AND expire > :expire', array('id' => $session_id, 'expire' => localdate('Y-m-d H:i:s')))));
    $session = false;
    $user_id = null;
    if (!empty($users)) {
        // セッションを更新
        $new_session_id = rand_string();
        $resource = update_sessions(array('set' => array('id' => $new_session_id, 'agent' => $_SERVER['HTTP_USER_AGENT'], 'expire' => localdate('Y-m-d H:i:s', time() + $GLOBALS['config']['cookie_expire'])), 'where' => array('id = :id', array('id' => $session_id))));
        if ($resource) {
            cookie_set('auth[session]', $new_session_id, time() + $GLOBALS['config']['cookie_expire']);
        } else {
            error('データを編集できません。');
        }
        if ($users[0]['keep']) {
            // ユーザを更新
            $resource = update_users(array('set' => array('loggedin' => localdate('Y-m-d H:i:s')), 'where' => array('id = :id', array('id' => $users[0]['user_id']))));
            if (!$resource) {
                error('データを編集できません。');
            }
            $session = true;
            $user_id = $users[0]['user_id'];
        }
    }
    return array($session, $user_id);
}
예제 #2
0
 if ($session_twostep == 1 || isset($_POST['twostep_session']) && $_POST['twostep_session'] === 'keep') {
     $twostep = 1;
 } else {
     $twostep = 0;
 }
 // セッションを取得
 $flag = false;
 if (isset($_COOKIE['auth']['session'])) {
     $users = select_sessions(array('select' => 'user_id', 'where' => array('id = :id', array('id' => $_COOKIE['auth']['session']))));
     if (!empty($users)) {
         $flag = true;
     }
 }
 // セッションを更新
 if ($flag === true) {
     $resource = update_sessions(array('set' => array('id' => $session, 'user_id' => $_SESSION['auth']['user']['id'], 'agent' => $_SERVER['HTTP_USER_AGENT'], 'keep' => $keep, 'twostep' => $twostep, 'expire' => localdate('Y-m-d H:i:s', time() + $GLOBALS['config']['cookie_expire'])), 'where' => array('id = :id', array('id' => $_COOKIE['auth']['session']))));
     if (!$resource) {
         error('データを編集できません。');
     }
 } else {
     $resource = insert_sessions(array('values' => array('id' => $session, 'user_id' => $_SESSION['auth']['user']['id'], 'agent' => $_SERVER['HTTP_USER_AGENT'], 'keep' => $keep, 'twostep' => $twostep, 'expire' => localdate('Y-m-d H:i:s', time() + $GLOBALS['config']['cookie_expire']))));
     if (!$resource) {
         error('データを登録できません。');
     }
 }
 cookie_set('auth[session]', $session, localdate() + $GLOBALS['config']['cookie_expire']);
 // 古いセッションを削除
 $resource = delete_sessions(array('where' => array('expire < :expire', array('expire' => localdate('Y-m-d H:i:s')))));
 if (!$resource) {
     error('データを削除できません。');
 }
예제 #3
0
<?php

// ログアウト
$resource = update_sessions(array('set' => array('keep' => 0), 'where' => array('id = :session AND user_id = :user_id', array('session' => $_COOKIE['auth']['session'], 'user_id' => $_SESSION['auth']['user']['id']))));
if (!$resource) {
    error('データを編集できません。');
}
unset($_SESSION['auth']['user']);
// リファラ
if (isset($_GET['referer'])) {
    $referer .= '?referer=' . rawurlencode($_GET['referer']);
} else {
    $referer = '';
}
// リダイレクト
redirect('/user' . $referer);