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

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

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

Сообщение Dezant »

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

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

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

  1. <?php
  2. if($_POST['register'])
  3. {
  4. echo '<br />';
  5. $name = htmlspecialchars(addslashes($_POST['name']));
  6. $email = htmlspecialchars(addslashes($_POST['email']));
  7. if(empty($name) || empty($email))
  8. {
  9. echo 'Confirm Fields.';
  10. }
  11. else if(strlen($name) < 4 || strlen($name) > 32)
  12. {
  13. echo 'Макс название 32, мин -4.';
  14. }
  15. else if(!preg_match("/^[_a-zA-Z0-9]+(\.[_a-zA-Z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,6})$/", $email))
  16. {
  17. echo 'Некорректный  e-mail.';
  18. }
  19. else
  20. {
  21. $sql = "SELECT * FROM `plug` WHERE `name` LIKE '$name'";
  22. $res = mysql_query($sql) or die(mysql_error());
  23. $sql2 = "SELECT * FROM `plug` WHERE `email` LIKE '$email'";
  24. $res2 = mysql_query($sql2) or die(mysql_error());
  25. if(mysql_num_rows($res) > 0)
  26. {
  27. echo 'Имя занято.';
  28. }
  29. else if(mysql_num_rows($res2) > 0)
  30. {
  31. echo 'e-mail занят.';
  32. }
  33. else
  34. {
  35. $sql3 = "INSERT INTo `plug` (`id`, `name`, `email`) VALUES ('', '$name', '$email');";
  36. $res3 = mysql_query($sql3) or die(mysql_error());
  37. $sql4 = "SELECT `id` FROM `plug` WHERE `name`='$name'";
  38. $res4 = mysql_query($sql4) or die(mysql_error());
  39. $row4 = mysql_fetch_array($res4);
  40. echo 'Регистрация успешна!<br />Ваша ссылка: <a href="#">'.$url.'/plug.php?id='.$row4['id'].'</a>';
  41. }
  42. }
  43. }
  44. ?>


БД

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

  1. CREATE TABLE IF NOT EXISTS `plug` (
  2. `id` int(11) NOT NULL auto_increment,
  3. `name` varchar(32) NOT NULL,
  4. `email` varchar(255) NOT NULL,
  5. `visits` int(11) NOT NULL,
  6. UNIQUE KEY `id` (`id`)
  7. ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
  8.  
  9. CREATE TABLE IF NOT EXISTS `visits` (
  10. `id` int(11) NOT NULL auto_increment,
  11. `plug_id` int(11) NOT NULL,
  12. `ipadress` varchar(25) NOT NULL,
  13. `time` int(11) NOT NULL,
  14. UNIQUE KEY `id` (`id`)
  15. ) 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 »

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

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

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



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

  1. MYSQL_CONNECT($db_hostname,$db_username,$db_password) OR DIE("<P><b>Нет коннекта к бд!</b></P>");
  2. @mysql_select_db($db_name) or die("<P><b>Не удаётся выбрать бд!</b></P>");
  3. mysql_query("SET CHARACTER SET 'utf8'");
  4.  
  5. $user_id = $_COOKIE['user_id'];
  6. if($user_id) {
  7.  
  8.  
  9. $auth_key = $_COOKIE['auth_key'];
  10. $real_key = md5($app_id.'_'.$user_id.'_'.$app_key);


А что делать дальше? Как выбрать его ID для занесения в БД, и как выделить ему url

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

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

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

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

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

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

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

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

Сообщение Dezant »

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

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

  1.  
  2.  <?php
  3.  $api_id = 2920316; // ID приложения
  4. $secret_key = 'NFwZiAewk08uPSMBD0tn'; // защищенный ключ
  5.  $viewer_id = $_GET['viewer_id'];
  6. $auth_key = $_GET['auth_key'];
  7.  $real_key = md5($api_id."_".$viewer_id."_".$secret_key);
  8.  if ($auth_key == $real_key){
  9.     echo 'Ваш ID: '.$viewer_id;
  10. }
  11.  if($_POST['register'])
  12. $sql = "SELECT * FROM `plug` WHERE `name` LIKE '$viewer_id'";
  13. $res = mysql_query($sql) or die(mysql_error());
  14. $sql2 = "SELECT * FROM `plug` WHERE `email` LIKE '$email'";
  15. $res2 = mysql_query($sql2) or die(mysql_error());
  16. if(mysql_num_rows($res) > 0)
  17. {
  18. echo 'Это имя занято ';
  19. }
  20. else if(mysql_num_rows($res2) > 0)
  21. {
  22. echo ' e-mail занят.';
  23. }
  24. else
  25. {
  26. $sql3 = "INSERT INTo `plug` (`id`, `name`, `email`) VALUES ('', '$viewer_id',
  27.  '$viewer_id');";
  28. $res3 = mysql_query($sql3) or die(mysql_error());
  29. $sql4 = "SELECT `id` FROM `plug` WHERE `name`='$viewer_id'";
  30. $res4 = mysql_query($sql4) or die(mysql_error());
  31. $row4 = mysql_fetch_array($res4);
  32. echo 'Регистрация успешна!<br />Ваша ссылка: <a href="#">'.
  33. $url.'/plug.php?id='.$row4['id'].'</a>';
  34. }
  35. ?>
  36.  
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 заносится в БД пустой...

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

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