VK API - Отправка уведомлений




Главная > Уроки > VK.api > VK API - Отправка уведомлений

VK API - Отправка уведомлений

Автор/переводчик статьи: Команда сайта flashmaster.org.ua

Дата: 2013-02-13

VK api отправка уведомлений

Добрый вечер!

Сегодня я бы хотел вам показать скрипт, который позволит вам отправлять уведомления своим пользователям приложения вконтакте. Уведомления vk api - это неотделимая часть каждого приложения. Это не только придаст функциональности ему, но и привлечет к большей активности ваших пользователей приложения. Итак, перейдем к делу.

Возможности предоставленные данным скриптом:

  • Безграничное количество пользователей, которым вы сможете отправить уведомление.
  • Есть форма, через которую можно отправлять уведомления.
  • В случае если вы передумали отправлять уведомления, то вы можете отменить передачу, пока она не успела закончится. 
  • Вы можете указать позицию, начиная с которой будет отправляться рассылка, по умолчание 0, то есть первый пользователь в вашей базе.
  • Рассылка ведет лог, в котором сохраняет информацию о времени отправки. 
  • Лог можно ичистить.
  • Все на автомате, ввели текст нажали на кснопку и пошли пить кофе. Что бы отправить 40 000 пользователями уходит около 25 минут.
  • Почит никакой нагрузки на Ваш сервер. 
  • Подсчитует общее количество пользователей в базе. 

А вот требования:

  1. База с пользователями должна быть типа MySql.
  2. Поддерживание Curl хостингом.
  3. Ссылка на IQUERY (она уже упомянута в скрипте).

К делу:

1. Сам файл "config.php" - не в коем случае не меняйте название.

 

 
<?php
$dbhost = "localhost"; // Хостинг
$dbname = "base_TEST"; // Название базы данных MySQL
$dbuser = "user_TEST"; // Имя пользователя базы данных MySQL
$dbpass = "pass_TEST"; // Пароль к базе данных MySQL
 
$dbtable = "table_TEST"; // Название таблицы базы пользователей ВКонтакте
$idcolumn = "ID"; // Название колонки с пользовательскими ID
 
$api_id="1234567890";  // ID приложения
$api_key="QWERTYUIOPASDFGHJKLZXCVBNM"; // Защищенный ключ
 
 
// Набор PHP функций (НЕ ИЗМЕНЯТЬ!)
function db_connect($dbhost, $dbuser, $dbpass, $dbname)
{
mysql_connect($dbhost, $dbuser, $dbpass)
or die('Невозможно подключиться к базе данных: ' . mysql_error());
mysql_select_db($dbname);
}
 
function do_query($query)
{
 global $res;
 $res = mysql_query($query)
    or die("Неверный запрос: " . mysql_error());
}
?> 
 

Описание:

Тут все что нужно, для настройки уведомлений для вашего приложения в хостинга. 

Не забудьте сменить данные для входа в MySql (имя базы, пароль, пользователь, бд...)

Главное - укажите название колонки где находиться ID пользователей, ну и название таблици ("table_TEST").

Также, нужно сменить app_id и защитный клюс.

2. "z-sender.php" - название должно быть как есть. 

 

 
<?
include_once("config.php");
 
if ($_POST) {
$first = $_POST['fromid'];
$tbname = $_POST['fromtb'];
 
if (trim($first) == '') {$first = "0";}
$userids = "";
$symbol = "";
 
db_connect($dbhost, $dbuser, $dbpass, $dbname);
mysql_query("SET NAMES 'cp1251'");
$result = mysql_query("SELECT * FROM $tbname LIMIT $first, 100");
while ($row =  mysql_fetch_array($result)) {
if ($userids !== "") {$symbol = ",";}
$userids = $userids.$symbol.$row[$idcolumn];
}
 
$mesage= $_POST['yourtext'];
 
$rand = rand();
$timestamp = time()+300;
 
$sig = md5("api_id=".$api_id."message=".$mesage."method=secure.sendNotificationrandom=".$rand."timestamp=".$timestamp."uids=".$userids."v=2.0".$api_key);
$postvars="api_id=".$api_id."&message=".$mesage."&method=secure.sendNotification&random=".$rand."&timestamp=".$timestamp."&uids=".$userids."&v=2.0&sig=".$sig;
 
 
$chp = curl_init('http://api.vkontakte.ru/api.php');
curl_setopt($chp, CURLOPT_HEADER,0);
curl_setopt($chp, CURLOPT_RETURNTRANSFER ,1);
curl_setopt($chp, CURLOPT_POST, 1);
curl_setopt($chp, CURLOPT_POSTFIELDS,  $postvars);
$res = curl_exec($chp);
curl_close($chp);
 
$datetime = date("[H:i:s] ");
$len = strlen($res);
if ($len !== 51) {
$check = strpos($res, 'Invalid');
if ($check == false) {echo "$datetime Отправились уведомления до: $res";} else {echo "$datetime В данной позиции ID не найдены.";}
} else
{echo "$datetime Ни одного уведомления не доставлено.";}
} else echo "ERROR.";
?>
 

Описание: 

Самый главный скрипт, он принимает все применяя AJAX запросы (метод - POST) для позиции ID, ну и для текста уведомления. Есть небольшая защита, запрет на прямой вход к файлу. Изменять скрипт не нужно все как надо. После выполнения скрипта данные передаются к следующему файлу. 

3. "sendnotifi.php". 

 

 
<?php
include_once("config.php");
db_connect($dbhost, $dbuser, $dbpass, $dbname);
mysql_query("SET NAMES 'cp1251'");
$result = mysql_query("SELECT * FROM $dbtable");
$all = (mysql_num_rows($result)) - 100;
?>
 
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>Отправка уведомлений</title>
<script src="http://code.jquery.com/jquery.min.js" type="text/javascript"></script>
</head>
<body>
 
<script type="text/javascript">
function ClearLog() {
document.getElementById('z_status').innerHTML = "<br /><br /><B>Лог процесса рассылки очищен!</B>";
}
 
function SendMsg() {
var sOldText = document.getElementById('z_status').innerHTML;
var sSendText = document.getElementById('z_sendtext').value;
var sPosition = document.getElementById('z_position').value;
var sFinish = parseInt("<? echo $all;?>");
var sCurrent = parseInt(sPosition);
 
if (sSendText == '') {
 
document.getElementById('z_status').innerHTML = sOldText+ "<br /><br /><B>Пожалуйста, введите текст уведомления!</B>";
} else {
 
if(document.getElementById('s_box').checked) {
 
 
if (sFinish < sCurrent) {
document.getElementById('z_status').innerHTML = sOldText+ "<br /><br /><B>Отправка уведомлений завершена, либо превышен диапазон ID.</B>"+'<span id="s_finish"></span>';
document.getElementById('s_finish').scrollIntoView();
 
} else {
document.getElementById('z_status').innerHTML = sOldText+ "<br /><br />Отправка уведомлений от позиции <b>" + sPosition + "</b> из <b><? echo $all;?></b> ...";
$.post("/z_sender.php",{fromid: sPosition, fromtb: '<? echo $dbtable;?>', yourtext: sSendText},onAjaxSuccess);}
 
} else {
document.getElementById('z_status').innerHTML = sOldText+ "<br /><br /><B>Отправка уведомлений приостановлена, либо не включена!</B>"+'<span id="s_finish"></span>';
document.getElementById('s_finish').scrollIntoView();
}
}
}
 
function onAjaxSuccess(data)
{
var sOldText = document.getElementById('z_status').innerHTML;
var sPosition = parseInt(document.getElementById('z_position').value) + 100;
document.getElementById('z_position').value = sPosition;
document.getElementById('z_status').innerHTML = sOldText + "<br />" + data + '<span id="yak' + sPosition + '"></span>';
document.getElementById('yak'+sPosition).scrollIntoView();
 
SendMsg();
}
 
 
</script>
 
<h1>Отправка уведомлений</h1>
Начать отправку с позиции (от 0 до <?=$all?>):<br />
<input type="text" id="z_position" style="width:100px;" value="0">
<input type="checkbox" id="s_box" checked> Включить\выключить отправку
<br />
Текст уведомления (максимум 1024 символа):<br />
<textarea id="z_sendtext" cols="50" rows="5"></textarea><br /><br />
<input type="button" value="Отправить" onClick="SendMsg()"> <input type="button" value="Очистить" onClick="ClearLog()"><br />
<div style="margin-top: 6px; border: 0px solid #E0E0E0; width: 800px; height: 250px; overflow: auto;">
<span id="z_status"></span>
</div>
</body>
</html>
 

Описание:

Файл служет формой для ввода текста уведомления и прочих хитростей. Желательно поменять название файла, что бы никто больне не отсылал уведомления вашим пользователям. Тут вы вводите текст, ставите галочку и выбиете позицию. Ниже ведется лог. 

Если вы захотите, то как я уже говорил можите отменить рассылку. Позиция при этом сохраняется. 

Вот результат:

отправка уведомлений vk api

Скрипт хорший, пользуйтесь, думаю многим пригодится. 

Время от времени делате очистку лога. Для уменьшения нагрузки на сайт, время от времени останавливайте отправку уведомлений. 

 

Просмотров: 6613


Понравился материал? Поделись с друзьями!





Подписаться на рассылку.

При перепечатки материалов ссылка на наш сайт обязательна!


    Лучшие статьи этой категории:

  • VK API - Передача параметров другой странице IFrame-приложения (PHP, JavaScript)

  • VK API - Отправка уведомлений

  • VK API - вывод списка друзей

  • Основные принципы работы с VK.Api

  • Про приложения вконтакте

    • Добавить Ваш коментарий:

      Введити сумму чисел с картинки:

      Коментарии:

      Коментарий добавил(а): Андрей
      Дата: 2016-03-28

      Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in /var/www/site/config.php on line 17


      Коментарий добавил(а): Андрей
      Дата: 2016-03-28

      А не подскажите как создать под это всё базу данных?


      Коментарий добавил(а): Алексей
      Дата: 2015-06-30

      Отгадайка (Продажа/обмен) (FLASH) Ссылка на приложение: http://vk.com/app2376658_77967313 Это неодобренное - копия (но есть и одобреное). В исходнике идёт: -Исходник лаунчера -Исходник прелоадера -Дамп БД -Серверная чать (php) По обмену/продаже пишите сюда: http://vk.com/kaaaktuz Цена: договорная.


      Коментарий добавил(а): Олег
      Дата: 2014-08-09

      Извиняюсь, может не в тему, но есть ли какое нибудь приложение чтобы мне приходили уведомления когда тот или иной человек публикует что-то в группе(ах). Shado-ww@yandex.ru


      Коментарий добавил(а): Добрый гномик
      Дата: 2014-06-02

      Спасибо, долго искал, но хорошо что нашёл этот сайт. Всё стало работать!


      Коментарий добавил(а): любовь
      Дата: 2014-03-14

      Супер


      Коментарий добавил(а): 229342130
      Дата: 2014-03-14

      Клевый урок


 1