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);
}