Сегодня я начал разработку нового приложения для ВК. И начал с реализации авторизации пользователя. Хотя это мое уже не первое приложение я постоянно делаю авторизацию заново. И я решил сделать функцию авторизации, которую можно будет использовать в последующих приложениях.
Эта функция очень простая, но лвсе же проще использовать готовое чем постоянно писать одно и тоже.
Функция при запуске приложения получет 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. Как в таком случае можно защитить запросы пользователей?
Вы что нибудь знаете об параметре auth_key который тоже передается при переходе на приложение?