Встраиваю на свой сайт авторизацию через ВКонтакте, используя готовый виджет.
Но обработчик на кнопку Вход написан свой. Он срабатывает не до конца у меня, т. е. выполняется, потом перенаправляет как положено на главную, но авторизации не происходит. На сколько понял- из-за неправильной
передачи cookies, т. к. в БД заносит нормально. Или что-то другое..
<?php
$uid=$_GET['uid'];
$name=$_GET['uid'];
// подключаем конфиг, базу данных, делаем нужные приготовления
if ($_GET['hash']===md5('APP_ID'.$uid.'__SECRET_KEY__')) {// APP_ID-
id приложения, __SECRET_KEY__ - секретный ключ сайта-приложения,
подключенного ВК
//если хеши равны, вероятно, вконтакте распознал пользователя и готов
подтвердить его личность
//для учетных записей пользователей будем создавать логины,
начинающиеся на vk-********
$result = mysql_query("SELECT id, random, password FROM jos_users WHERE username = 'vk-$uid'");
setcookie('uid','');
setcookie('pass','');
if (mysql_num_rows($result)) {
//пользователь авторизован, просто пересоздадим куки
$user = mysql_fetch_assoc($result);
mysql_query("UPDATE jos_users SET name = '$name' WHERE username =
'vk-$uid' LIMIT 1");
setcookie('pass',md5($user['random'].$user['password'].$user['random']));
setcookie('uid',$user['id']);
} else {
//добавим запись в таблицу пользователей
$random = mt_rand(100000,999999);
$pwd = $uid.'verysecretlonglongword-';
$pid=md5(uniqid(rand(),true));
mysql_query("INSERT INTO jos_users
(`name`, `username`, `password`, `email`, `usertype`, `gid`,
`random`, `pid`) VALUES
('$name', 'vk-$uid', '" . md5($pwd). "', '', 'Registered', 18,
$random, '$pid')");
//вставили строчку, теперь создадим куки и перебросим на другую страницу
setcookie('pass',md5($random.md5($pwd).$random));
setcookie('uid',mysql_insert_id());
}
header("Location: /index.php"); // отправим пользователя на главную
страницу сайта
}
?>