Скрипт отправляет уведомления пользователям приложения.
ID пользователей скрипт берет из базы, организованной по принципу как в этом уроке http://flapps.ru/forum/topic165.html
Для работы скрипта необходим хостинг с поддержкой curl.
settings.php
Код: Выделить всё
<?php// данные доступа к базе данных$db_host="localhost";$db_user="user";$db_password="pass";$db_name = "base";$table_name = "stat"; // данные приложения$app_id = '743131';$api_secret = 'qwertyuioasdfghjklzxcvbnm'; /* http://flapps.ru/forum/ - форум о создании приложений */?>
Код: Выделить всё
<?php/* http://flapps.ru/forum/ - форум о создании приложений */ set_time_limit(0); if (isset($_POST['send'])) { require('VkApi.class.php');include('settings.php'); mysql_connect($db_host, $db_user, $db_password) or die (mysql_error());mysql_select_db($db_name) or die (mysql_error()); function get_url($query) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $query); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_TIMEOUT, 10); return curl_exec($ch); curl_close($ch);} $message = $_POST['mess'];$sql = 'SELECT `uid` FROM `'.$table_name.'`';$res = mysql_query($sql);$all = mysql_num_rows($res); echo 'Всего пользователей: '.$all.'<br />';echo 'Сообщение: '.$message.'<br /><br />'; $all_send = 0; if ($all > 100) { $kolvo = ceil($all/100); for ($i=0; $i<$kolvo; $i++) { $uids = ''; $sql = 'SELECT `uid` FROM `'.$table_name.'` ORDER BY `id` LIMIT '.($i*100).','.(100); $res = mysql_query($sql); while($row = mysql_fetch_assoc($res)) { $uids = $uids.$row[uid].','; } $uids = substr($uids, 0, -1); // отправка // $uids = split(',',$uids); $api = new VkApiNode($app_id, $api_secret); $query = $api->sendNotification($uids, $message); get_url($query); $all_send = $all_send + substr_count($uids, ',') + 1; echo 'Идёт отправка... Отправлено: '.($all_send*100).'/'.$all.'<br />'; flush(); sleep(1); } echo '<br />Отправка завершена. Отправлено: '.($all_send*100).'/'.$all.'<br />';}else { $uids = ''; while($row = mysql_fetch_assoc($res)) { $uids = $uids.$row[uid].','; } $uids = substr($uids, 0, -1); // отправка $uids = split(',',$uids); $api = new VkApiNode($app_id, $api_secret); $query = $api->sendNotification($uids, $message); get_url($query); $all_send = $all_send + substr_count($uids, ',') + 1; echo 'Отправлено: '.($all_send*100).'/'.$all.'<br />';} }else {?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>Отправка уведомлений</title></head> <body><h1>Отправка уведомлений</h1><form method="post">Текст уведомления (максимум 1024 символа):<br /><textarea name="mess" cols="50" rows="5"></textarea><br /><br /><button name="send" type="submit">Отправить</button></form></body></html><? } ?>
Исходник http://flapps.ru/example/sendNotification.rar
Код в исходнике немного отличается и могут появляться проблемы при отправке уведомлений большому количеству пользователей. Смотрите исправленный код в этом сообщении выше.
Инструкция
Серверная часть
1. В файле settings.php измените:
$db_host - обычно можно оставить "localhost"
$db_user - имя пользователя БД
$db_password - пароль БД
$db_name - имя БД
$table_name - имя таблицы (если вы изменили его при создании таблицы в первом пункте, измените его и здесь)
$app_id - ID приложения
$api_secret - защищенный ключ (с вкладки "Платежи")
2. Загрузите файлы в любой каталог на сервере.
3. Для отправки уведомлений введите в браузере путь к файлу send.php на вашем сервере. Введите текст уведомления и нажмите "Отправить". Процесс отправки будет отображаться на странице.
Рекомендую сразу сменить имя этого файла, чтобы посторонние люди не могли отправлять уведомления.