База данных пользователей приложения (ВК IFrame, jQuery)

Iframe, ВКонтакте API, HTML, JavaScript, jQuery, PHP, mySQL

Нужны знания Javascript, библиотеки jQuery, PHP, phpMyAdmin, SQL.
Понадобится свой сервер с поддержкой php и mySQL.

ВНИМАНИЕ! Поддержка функции mysql_query будет удалена из PHP в будущем.

Данное расширение устарело, начиная с версии PHP 5.5.0, и будет удалено в будущем. Используйте вместо него MySQLi или PDO_MySQL. Смотрите также инструкцию MySQL: выбор API и соответствующий FAQ для получения более подробной информации. Альтернативы для данной функции:
mysqli_query()
PDO::query()

http://www.php.net/manual/ru/function.mysql-query.php

С уроком можно ознакомится в качестве примера, но для работы над проектами лучше сразу выберите новый способ. Все делается по такому же принципу. Читайте документацию по PHP.

Способ 1

Подходит когда нужно обновить запись в базе при совершении какого-то действия, которое можно отловить с помощью JavaScript

1. Создаём базу в phpMyAdmin.

CREATE TABLE IF NOT EXISTS `stat` (
  `id` int(9) AUTO_INCREMENT, 
  `uid` int(9),
  `last_date` int(10), 
  `visits` int(9) DEFAULT '1', 
  PRIMARY KEY  (`id`), 
  UNIQUE KEY `uid` (`uid`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8;


2. Создаём php-файл.

<?php
// данные доступа к базе данных
$db_host="localhost";       // обычно не нужно изменять
$db_user="user";        // имя пользователя БД
$db_password="pass";        // пароль БД
$db_name = "name";      // имя БД
$table_name = "stat";       // имя таблицы статистики. Если вы не меняли его в запросе, создающем БД, то и здесь менять его не надо
// данные приложения
$app_id = '743131'; // id приложения
$api_secret = 'qwertyuiopasdfghjklzxcvbnm'; // защищенный ключ приложения
$auth_key  = $_POST['auth_key'];
$viewer_id = $_POST['viewer_id'];
$real_key = md5($app_id."_".$viewer_id."_".$api_secret);
if ($auth_key == $real_key){
    // соединение с БД
    mysql_connect($db_host, $db_user, $db_password) or die (mysql_error());
    mysql_select_db($db_name) or die (mysql_error());
    mysql_query("SET NAMES 'utf8'");
    // Выполняем запрос: если пользователя с таким id ещё нет в БД, то добавляем, если есть, то обновляем запись, прибавляя одно посещение (`visits` = (`visits`+1))
    $query = 'INSERT INTO `'.$table_name.'` (`uid`, `last_date`) VALUES ("'.$viewer_id.'","'.time().'") ON DUPLICATE KEY UPDATE  `visits` = (`visits`+1), `last_date`="'.time().'";';
    $sql = mysql_query($query);
    echo "OK";
}
?>


3. Создаём html файл.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<!-- подключаем jQuery -->
<script src="js/jquery-1.4.2.min.js" type="text/javascript"></script>
<script src="http://vkontakte.ru/js/api/xd_connection.js?2" type="text/javascript"></script>
 
<script type="text/javascript" charset="cp1251" >
$(document).ready(function(){ // когда страница загрузится
    VK.init(function() {
        // получаем flashVars
        var parts=document.location.search.substr(1).split("&");
            var flashVars={}, curr;
            for (i=0; i<parts.length; i++) {
                curr = parts[i].split('=');
                flashVars[curr[0]] = curr[1];
            }
        // вытаскиваем viewer_id и auth_key из полученных переменных
        var viewer_id = flashVars['viewer_id'];
        var auth_key = flashVars['auth_key'];
    // отправляем post запрос, передаём viewer_id и auth_key
    $.post('http://site.ru/iframe_stat/iframe_stat.php',  // заменяем на адерс своего скрипта
            { "viewer_id": viewer_id, "auth_key": auth_key },   // передаваемые значения
            function(data){         // функция после выполнения передачи данных
                $('#result').html(data);
            });
    });
});
</script>
</head>
<body>
<div id="result"></div>
</body>
</html>

Файл jquery-1.4.2.min.js находится в архиве с исходником, в конце этого урока.

4. Загружаем файлы на сервер.

5. Настраиваем приложение.

Включено
Тип: Iframe
Адрес IFrame: Ссылка на созданный html файл на вашем сервере. Например: http://site.ru/vk.html

6. Всё готово.

Способ 2

Подходит если надо обновить запись в базе при простом обращении к странице. Код писать в эту страницу.
// данные доступа к базе данных
$db_host="localhost";       // обычно не нужно изменять
$db_user="user";        // имя пользователя БД
$db_password="pass";        // пароль БД
$db_name = "name";      // имя БД
$table_name = "stat";       // имя таблицы статистики. Если вы не меняли его в запросе, создающем БД, то и здесь менять его не надо
// данные приложения
$app_id = '743131'; // id приложения
$api_secret = 'qwertyuiopasdfghjklzxcvbnm'; // защищенный ключ приложения
 
$auth_key  = $_GET['auth_key'];
$viewer_id = $_GET['viewer_id'];
 
$real_key = md5($app_id."_".$viewer_id."_".$api_secret);
if ($auth_key == $real_key){
    // соединение с БД
    mysql_connect($db_host, $db_user, $db_password) or die (mysql_error());
    mysql_select_db($db_name) or die (mysql_error());
    mysql_query("SET NAMES 'utf8'");
    // Выполняем запрос: если пользователя с таким id ещё нет в БД, то добавляем, если есть, то обновляем запись, прибавляя одно посещение (`visits` = (`visits`+1))
    $query = 'INSERT INTO `'.$table_name.'` (`uid`, `last_date`) VALUES ("'.$viewer_id.'","'.time().'") ON DUPLICATE KEY UPDATE  `visits` = (`visits`+1), `last_date`="'.time().'";';
    $sql = mysql_query($query);
}
Теги:
ВК IFrame
Добавлено: 16 Августа 2013 10:12:18 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...