############################################################################################
## Авторизация через VK ##
############################################################################################
case 'vk':
## Данные которые надо заменить на свои !!! ##
$client_id = '4128424'; // ID приложения
$client_secret = '69irHh9DVWKKcRBYsdKL'; // Защищённый ключ
$redirect_uri = 'http://site.ru/input.php?act=vk'; // Адрес сайта
## Дальше ничего не трогать !!! ##
$url = 'http://oauth.vk.com/authorize';
$params = array(
'client_id' => $client_id,
'redirect_uri' => $redirect_uri,
'response_type' => 'code'
);
if (isset($_GET['code'])) {
$result = false;
$params = array(
'client_id' => $client_id,
'client_secret' => $client_secret,
'code' => $_GET['code'],
'redirect_uri' => $redirect_uri
);
$token = json_decode(file_get_contents('https://oauth.vk.com/access_token' . '?' . urldecode(http_build_query($params))), true);
if (isset($token['access_token'])) {
$params = array(
'uids' => $token['user_id'],
'fields' => 'uid,first_name,last_name,screen_name,sex,bdate,photo_medium',
'access_token' => $token['access_token']
);
$userInfo = json_decode(file_get_contents('https://api.vk.com/method/users.get' . '?' . urldecode(http_build_query($params))), true);
if (isset($userInfo['response'][0]['uid'])) {
$userInfo = $userInfo['response'][0];
$result = true;
}
}
if ($result) {
$reglogin = DB::run() -> querySingle("SELECT `users_id` FROM `users` WHERE lower(`users_login`)=? LIMIT 1;", array(strtolower($userInfo['uid'])));
if (empty($reglogin)) {
$mail = $userInfo['uid'].'@mail.ru';
$password = generate_password(rand(6,8));
DB::run() -> query("INSERT INTO `users` (`users_login`, `users_pass`, `users_email`, `users_joined`, `users_level`, `users_gender`, `users_newprivat`, `users_themes`, `users_postguest`, `users_postnews`, `users_postprivat`, `users_postforum`, `users_themesforum`, `users_postboard`, `users_timezone`, `users_showtime`, `users_point`, `users_money`, `users_timelastlogin`, `users_confirmreg`, `users_nickname`, `users_navigation`,`users_picture`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);", array($userInfo['uid'], md5(md5($password)), $mail, SITETIME, 107, $userInfo['sex'], 1, $config['themes'], $config['bookpost'], $config['postnews'], $config['privatpost'], $config['forumpost'], $config['forumtem'], $config['boardspost'], $config['timezone'], $config['showtime'], 0, 1000, SITETIME, $config['regkeys'], $userInfo['first_name'] . ' ' . $userInfo['last_name'], $config['navigation'], $userInfo['uid'].'.jpg'));
$textpriv = 'Добро пожаловать,' . $userInfo['first_name'] . ' ' . $userInfo['last_name'] . '!<br />Теперь Вы полноправный пользователь сайта, ваш пароль '.$password.' и временный mail '.$mail.', они пригодятся вам для изменеия настроек.<br />Перед посещением сайта рекомендуем вам ознакомиться с [url='.$config['home'].'/pages/rules.php?'.SID.']правилами сайта[/url], это поможет Вам избежать неприятных ситуаций.<br />Желаем приятно провести время.<br />С уважением, администрация сайта';
DB::run() -> query("INSERT INTO `inbox` (`inbox_user`, `inbox_author`, `inbox_text`, `inbox_time`) VALUES (?, ?, ?, ?);", array($userInfo['uid'], $config['nickname'], $textpriv, SITETIME));
save_usermail();
}
$regpass = DB::run() -> queryFetch('SELECT `users_pass` FROM `users` WHERE `users_login` = '.$userInfo['uid'].' LIMIT 1');
setcookie("cooklog", $userInfo['uid'], time() + 3600 * 24 * 365, '/', '');
setcookie("cookpar", md5($regpass['users_pass'].$config['keypass']), time() + 3600 * 24 * 365, '/', '');
copy($userInfo['photo_medium'], 'upload/photos/'.$userInfo['uid'].'.jpg');
$_SESSION['note'] = 'Вы успешно авторизованы!';
$_SESSION['log'] = $userInfo['uid'];
$_SESSION['par'] = md5($config['keypass'].$regpass['users_pass']);
$_SESSION['my_ip'] = $ip;
redirect($config['home'].'/index.php');
}
}
break;
############################################################################################
## Выход ##
############################################################################################