Регистрация при установке приложения.

Обсуждение и помощь по вопросам взаимодействия с ВКонтакте API в IFrame-приложениях (JavaScript, PHP и т.д)
Dezant
Сообщения: 12
Зарегистрирован: 24 апр 2012, 18:57

Регистрация при установке приложения.

Сообщение Dezant »

Доброго времени суток.
С API вк не работал, программирую на стороне.
Подскажите, как сделать так, чтобы пользователь зарегистрировался после установки приложения, а не проходил регистрацию уже в самом приложении.

Вот код регистрации

Код: Выделить всё

<?phpif($_POST['register']){echo '<br />';$name = htmlspecialchars(addslashes($_POST['name']));$email = htmlspecialchars(addslashes($_POST['email']));if(empty($name) || empty($email)){echo 'Confirm Fields.';}else if(strlen($name) < 4 || strlen($name) > 32){echo 'Макс название 32, мин -4.';}else if(!preg_match("/^[_a-zA-Z0-9]+(\.[_a-zA-Z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,6})$/", $email)){echo 'Некорректный  e-mail.';}else{$sql = "SELECT * FROM `plug` WHERE `name` LIKE '$name'";$res = mysql_query($sql) or die(mysql_error());$sql2 = "SELECT * FROM `plug` WHERE `email` LIKE '$email'";$res2 = mysql_query($sql2) or die(mysql_error());if(mysql_num_rows($res) > 0){echo 'Имя занято.';}else if(mysql_num_rows($res2) > 0){echo 'e-mail занят.';}else{$sql3 = "INSERT INTo `plug` (`id`, `name`, `email`) VALUES ('', '$name', '$email');";$res3 = mysql_query($sql3) or die(mysql_error());$sql4 = "SELECT `id` FROM `plug` WHERE `name`='$name'";$res4 = mysql_query($sql4) or die(mysql_error());$row4 = mysql_fetch_array($res4);echo 'Регистрация успешна!<br />Ваша ссылка: <a href="#">'.$url.'/plug.php?id='.$row4['id'].'</a>';}}}?>
БД

Код: Выделить всё

CREATE TABLE IF NOT EXISTS `plug` (`id` int(11) NOT NULL auto_increment,`name` varchar(32) NOT NULL,`email` varchar(255) NOT NULL,`visits` int(11) NOT NULL,UNIQUE KEY `id` (`id`)) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1; CREATE TABLE IF NOT EXISTS `visits` (`id` int(11) NOT NULL auto_increment,`plug_id` int(11) NOT NULL,`ipadress` varchar(25) NOT NULL,`time` int(11) NOT NULL,UNIQUE KEY `id` (`id`)) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
Заранее благодарен!
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

Re: Регистрация при установке приложения.

Сообщение Александр »

Dezant
E-mail пользователя методами API не узнать. Кроме того
При размещении приложений на сайте ВКонтакте запрещается:
7. Использовать персональные данные пользователей без получения разрешения пользователей. В любом случае запрещается запрашивать у пользователей такие персональные данные, как email, пароли, номера телефонов, паспортные данные и другую личную информацию.
http://vk.com/page-1_3552041

Для авторизации пользователя в приложении можно использовать viewer_id + auth_key + защищенный ключ из настроек приложения.
Dezant
Сообщения: 12
Зарегистрирован: 24 апр 2012, 18:57

Re: Регистрация при установке приложения.

Сообщение Dezant »

Александр писал(а):Dezant
E-mail пользователя методами API не узнать. Кроме того
При размещении приложений на сайте ВКонтакте запрещается:
7. Использовать персональные данные пользователей без получения разрешения пользователей. В любом случае запрещается запрашивать у пользователей такие персональные данные, как email, пароли, номера телефонов, паспортные данные и другую личную информацию.
http://vk.com/page-1_3552041

Для авторизации пользователя в приложении можно использовать viewer_id + auth_key + защищенный ключ из настроек приложения.
Александр, мне не нужен ни e-mail, ни пароль от пользователя. Я просто показал как у меня сейчас идет регистрация, и прошу помочь сделать чтобы эта регистрация вовсе не требовалась, а вместо нее просто необходимо установить приложение.
Dezant
Сообщения: 12
Зарегистрирован: 24 апр 2012, 18:57

Re: Регистрация при установке приложения.

Сообщение Dezant »

Вообщем нужно, чтобы при установке приложения человек автоматически прошел регистрацию и ему выделилась ссылка

Код: Выделить всё

$row4 = mysql_fetch_array($res4);echo 'Регистрация успешна!<br />Ваша ссылка: <a href="#">'.$url.'/plug.php?id='.$row4['id'].'</a>';

Код: Выделить всё

MYSQL_CONNECT($db_hostname,$db_username,$db_password) OR DIE("<P><b>Нет коннекта к бд!</b></P>");@mysql_select_db($db_name) or die("<P><b>Не удаётся выбрать бд!</b></P>"); mysql_query("SET CHARACTER SET 'utf8'"); $user_id = $_COOKIE['user_id'];if($user_id) {  $auth_key = $_COOKIE['auth_key'];$real_key = md5($app_id.'_'.$user_id.'_'.$app_key);
А что делать дальше? Как выбрать его ID для занесения в БД, и как выделить ему url

Код: Выделить всё

$url.'/plug.php?id='.$row4['id'].'
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

Re: Регистрация при установке приложения.

Сообщение Александр »

Когда пользователь зайдет в приложение, запиши в базу его id Вконтакте (передаётся как viewer_id).
Потом проверяй авторизацию так

Код: Выделить всё

$api_id = 1728947; // ID приложения$secret_key = 'qweRtyuiop12asdFghjk'; // защищенный ключ $viewer_id = $_GET['viewer_id'];$auth_key = $_GET['auth_key']; $real_key = md5($api_id."_".$viewer_id."_".$secret_key); if ($auth_key == $real_key){    echo 'Ваш ID: '.$viewer_id;}
Dezant
Сообщения: 12
Зарегистрирован: 24 апр 2012, 18:57

Re: Регистрация при установке приложения.

Сообщение Dezant »

Спасибо! Я так полагаю что нужно так:

Код: Выделить всё

  <?php $api_id = 2920316; // ID приложения$secret_key = 'NFwZiAewk08uPSMBD0tn'; // защищенный ключ $viewer_id = $_GET['viewer_id'];$auth_key = $_GET['auth_key']; $real_key = md5($api_id."_".$viewer_id."_".$secret_key); if ($auth_key == $real_key){    echo 'Ваш ID: '.$viewer_id;} if($_POST['register'])$sql = "SELECT * FROM `plug` WHERE `name` LIKE '$viewer_id'";$res = mysql_query($sql) or die(mysql_error());$sql2 = "SELECT * FROM `plug` WHERE `email` LIKE '$email'";$res2 = mysql_query($sql2) or die(mysql_error());if(mysql_num_rows($res) > 0){echo 'Это имя занято ';}else if(mysql_num_rows($res2) > 0){echo ' e-mail занят.';}else{$sql3 = "INSERT INTo `plug` (`id`, `name`, `email`) VALUES ('', '$viewer_id',  '$viewer_id');";$res3 = mysql_query($sql3) or die(mysql_error());$sql4 = "SELECT `id` FROM `plug` WHERE `name`='$viewer_id'";$res4 = mysql_query($sql4) or die(mysql_error());$row4 = mysql_fetch_array($res4);echo 'Регистрация успешна!<br />Ваша ссылка: <a href="#">'.$url.'/plug.php?id='.$row4['id'].'</a>';}?> 
Dezant
Сообщения: 12
Зарегистрирован: 24 апр 2012, 18:57

Re: Регистрация при установке приложения.

Сообщение Dezant »

Все отлично работает! Осталось только форму регистрации закомментировать :D
Спасибо огромное! Я думал что сложнее будет
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

Re: Регистрация при установке приложения.

Сообщение Александр »

Dezant
Только вот зачем использовать в запросах LIKE, если можно просто использовать "="?
Наверное и name у тебя varchar, хотя id пользователя можно хранить в int.
И тебе самому удобно работать с неотформатированным кодом?
Dezant
Сообщения: 12
Зарегистрирован: 24 апр 2012, 18:57

Re: Регистрация при установке приложения.

Сообщение Dezant »

Александр писал(а):Dezant
Только вот зачем использовать в запросах LIKE, если можно просто использовать "="?
Наверное и name у тебя varchar, хотя id пользователя можно хранить в int.
И тебе самому удобно работать с неотформатированным кодом?
Как научился) name у меня буквенная запись по умолчанию была
Dezant
Сообщения: 12
Зарегистрирован: 24 апр 2012, 18:57

Re: Регистрация при установке приложения.

Сообщение Dezant »

Все таки не подошел метод... viewer_id заносится в БД пустой...

Код: Выделить всё

 INSERT INTO `plg`.`plug`  VALUES ('2','test',t@co.ru','1'),('3','','','1'),('4','.','.','0'),('5','','.','0'),('6','','.','0'),('7','','.','1'),('8','','.','1'),('9','','','0'),('10','','','0'),('11','','','0');  
Ответить