Автоматическая отправка уведомлений с использованием JQuery

Готовые уроки IFrame + ВКонтакте API
drac0Sha
Сообщения: 88
Зарегистрирован: 20 июл 2011, 15:41

Re: Автоматическая отправка уведомлений с использованием JQuery

Сообщение drac0Sha »

и кстати ! )
может ли быть проблема связана с тем, что у меня в БД хранится допустим 1800 человек
но некоторые из них удалили приложение
и из-за этого не передаётся!?
Аватара пользователя
Cypporat
Сообщения: 48
Зарегистрирован: 30 май 2011, 11:03

Re: Автоматическая отправка уведомлений с использованием JQuery

Сообщение Cypporat »

Помогите, как сделать вывод окна для посетителя приложения, с запросом разрешения отправки уведомлений приложением, если он оказался получать уведомления?
Аватара пользователя
gaponj88
Сообщения: 433
Зарегистрирован: 21 окт 2011, 12:26

Re: Автоматическая отправка уведомлений с использованием JQuery

Сообщение gaponj88 »

Cypporat
Нах?Те Окно?
Изображение
Поставь доступ, и усе....
А если он отказался, то поверь, пару раз окно вылезит, он удалит твое детище
Аватара пользователя
Cypporat
Сообщения: 48
Зарегистрирован: 30 май 2011, 11:03

Re: Автоматическая отправка уведомлений с использованием JQuery

Сообщение Cypporat »

у меня так и сделано но при отправке уведомлений некоторые отключают функцию получения рассылки вот нужно сделать такой скрипт который проверяет не отключил ли он рассылку, если отключил то вызывает окно с запросом на рассылку как в приложении http://vk.com/app1736381
T710MA
Сообщения: 22
Зарегистрирован: 16 май 2012, 17:30

Re: Автоматическая отправка уведомлений с использованием JQuery

Сообщение T710MA »

У меня не получается, вконтакте отключили эту услугу или я что-то упустил?
И правильно ли я понимаю, должны приходить оповещания пользователям(которые установили данное приложение), от имени этого приложение?

Всего два пользователя в приложении
И показывает от 0 до -98

Если я поменяю

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

7. $all = (mysql_num_rows($result)) - 100;
на

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

7. $all = (mysql_num_rows($result));
Должно ли у меня рассылать?
T710MA
Сообщения: 22
Зарегистрирован: 16 май 2012, 17:30

Re: Автоматическая отправка уведомлений с использованием JQuery

Сообщение T710MA »

Прощу прощения. Я разобрался, забыл галочку поставить "Разрешить приложению присылать Вам уведомления" ;)
Так бывает...
Аватара пользователя
tofido
Сообщения: 113
Зарегистрирован: 02 май 2012, 15:44

Re: Автоматическая отправка уведомлений с использованием JQuery

Сообщение tofido »

Занесения пользователя в Базу Данных. Где ошибочка?

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"; // Защищенный ключ  $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";} // Набор 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());}?>  

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.";?> 

3. Файлу "sendnotify.php"

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

 <?phpinclude_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> 

index.php

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

<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://xxxxx.ru/config.php',  // заменяем на адерс своего скрипта            { "viewer_id": viewer_id, "auth_key": auth_key },   // передаваемые значения            function(data){         // функция после выполнения передачи данных                $('#result').html(data);            });    }); });</script> 
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

Re: Автоматическая отправка уведомлений с использованием JQuery

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

tofido писал(а):Где ошибочка?
Проблема какая? Ошибку пишет? Данные передаются? На каком этапе возникает проблема?
Аватара пользователя
tofido
Сообщения: 113
Зарегистрирован: 02 май 2012, 15:44

Re: Автоматическая отправка уведомлений с использованием JQuery

Сообщение tofido »

Все вроде работает, жду пока наберется 100 + человек.
Аватара пользователя
tofido
Сообщения: 113
Зарегистрирован: 02 май 2012, 15:44

Re: Автоматическая отправка уведомлений с использованием JQuery

Сообщение tofido »

В базе больше 150 человек, но уведомления не рассылаються. Нужно больше людей или у меня что-то не правильно работает?
Ответить