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