Авторизация/регистрация пользователя в IFrame-приложениях ВКонтакте

Сегодня я начал разработку нового приложения для ВК. И начал с реализации авторизации пользователя. Хотя это мое уже не первое приложение я постоянно делаю авторизацию заново. И я решил сделать функцию авторизации, которую можно будет использовать в последующих приложениях.
Эта функция очень простая, но лвсе же проще использовать готовое чем постоянно писать одно и тоже.
Функция при запуске приложения получет id пользователя от ВК из get запроса и записывает в сессию(потом из сессии всегда можно быстро получить id), потом проверяет наличие юзера в базе данных, если пользователь новый, то делаем в бд запись о нем.

function writeCookiesAuth(){
	if(isset($_GET['viewer_id'])){
		$idVk = $_GET['viewer_id'];
		$_SESSION['id_vk'] = $idVk;
	}else{
		if(isset($_SESSION['id_vk'])){
			$idVk = (int)$_SESSION['id_vk'];
			if(!empty($idVk)){
				$_SESSION['id_vk'] = $idVk;
			}else{
				die("<h1>Ошибка, обновите страницу.</h1>");
			}
		}else{
			die("<h1>Ошибка, обновите страницу.</h1>");
		}
	}
	//проверяем есть ли такой юзер в бд, если нет то добавляем
	$datenow = date('Y-m-d');
	$row = getRowDb("SELECT * FROM `users` WHERE `users`.`id_vk` = ".$idVk.";");
	if(!$row){
		setRowDb("INSERT INTO `users` (`id_vk`, `date_reg`) VALUES (".$idVk.", ".$datenow."');");
	}
}
//для работы с бд
function getRowDb($query) {
	$sql = mysql_query($query) or die(mysql_error());
	$row = mysql_fetch_assoc($sql);
	return $row;
}

function setRowDb($query) {
	$sql = mysql_query($query) or die(mysql_error());
	return $sql;
}
Рассказать друзьям:


Оценить:
(Пока оценок нет)

Авторизация/регистрация пользователя в IFrame-приложениях ВКонтакте: 1 комментарий

  1. Привет,
    Спасибо за пост!
    Вопрос, а если злоумышленник в адресной строке все эти параметры передаст не в iframe. Как в таком случае можно защитить запросы пользователей?
    Вы что нибудь знаете об параметре auth_key который тоже передается при переходе на приложение?

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*

code