View file code.txt

File size: 4.57Kb
############################################################################################
##                              Авторизация через 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;
############################################################################################
##                                           Выход                                        ##
############################################################################################