Рабочие уведомления от 5.12.2013
Добавлено: 05 дек 2013, 13:45
Очень часто вижу людей, которые не разобрались в уроках уведомлений и пр...
Сейчас не секрет, что вк все меняет постоянно...
Именно поэтому я создал урок, в котором выложил свой код уведомлений(ним я пользуюсь, для себя писал..)
Итак.. вот мой код(часть админки):
config.php (настройки)
вспомогательные классы:
user.class.php
vkapi.class.php (1 моя правка для работы с последней версией vkapi)
создаем папку admin...
admin/index.php главный файл админки - вход...
admin/links.html - вспомогательный файл... со ссылками на все страницы админки(у меня их много..)
admin/exit.php - файл выхода с админки
admin/notif.php - страница с которой отсылаем уведомления...
admin/send.php - скрипт, отсылающий уведомления...
admin/main.php - главный файл админки... в нем у меня много чего.. но в уроке я только об уведомлениях
admin/jquery.min.js - библиотека для js...качаем по ссылке ниже, располагаем в папке admin!
https://ajax.googleapis.com/ajax/libs/j ... ery.min.js
итог...
если вы все сделали как в уроке(скопировали код, разместили правильно файлы), правильно поменяли данные в файле настроек - config.php, то все будет работать...
если есть вопросы - задавайте)
Удачи
Сейчас не секрет, что вк все меняет постоянно...
Именно поэтому я создал урок, в котором выложил свой код уведомлений(ним я пользуюсь, для себя писал..)
Итак.. вот мой код(часть админки):
config.php (настройки)
Код: Выделить всё
<?php define("DB_HOST","*");define("DB_USER","*");define("DB_PASS","*");define("DB_NAME","*"); define("APP_ID","*");define("APP_SECRET","*"); define("TIME_ZONE",3*3600); // часовой пояс от UTCdefine("TIME",time() + TIME_ZONE); // время... define("ADMIN", "*"); // логин админаdefine("ADMIN_PASS", "*"); // пароль админа define("USERS_TABLE_NAME", "users"); // имя таблицы с пользователямиdefine("USERS_TABLE_COLLUMN_UID", "uid"); // имя столбца с айди юзеров?>
user.class.php
Код: Выделить всё
<?phpclass user { static function checkVar($var) { // проверка переменной $var = str_replace(chr(0),'',$var); return mysql_escape_string($var); } static function checkAuth($auth,$viewer) { // проверяем auth_key $real = md5(APP_ID.'_'.$viewer.'_'.APP_SECRET); return $real == $auth; }}?>
Код: Выделить всё
<?php /** * VKAPI class for vk.com social network * * @package server API methods * @link http://vk.com/developers.php * @autor Oleg Illarionov * @version 1.0 */ class vkapi { var $api_secret; var $app_id; var $api_url; function vkapi($app_id, $api_secret, $api_url = 'api.vk.com/api.php') { $this->app_id = $app_id; $this->api_secret = $api_secret; if (!strstr($api_url, 'http://')) $api_url = 'http://'.$api_url; $this->api_url = $api_url; } function api($method,$params=false) { if (!$params) $params = array(); $params['api_id'] = $this->app_id; $params['v'] = '5.5'; // изменено на 5.5 - последнюю версию... $params['method'] = $method; $params['timestamp'] = time(); $params['format'] = 'json'; $params['random'] = rand(0,10000); ksort($params); $sig = ''; foreach($params as $k=>$v) { $sig .= $k.'='.$v; } $sig .= $this->api_secret; $params['sig'] = md5($sig); $query = $this->api_url.'?'.$this->params($params); $res = file_get_contents($query); return json_decode($res, true); } function params($params) { $pice = array(); foreach($params as $k=>$v) { $pice[] = $k.'='.urlencode($v); } return implode('&',$pice); }}?>
admin/index.php главный файл админки - вход...
Код: Выделить всё
<?phpheader("Content-Type: text/html; charset=utf-8");date_default_timezone_set("Europe/London"); if(isset($_COOKIE['login'])) { header("Location: main.php");}?><form action="main.php" method="get"> <p><b>Вход</b></p> <p><input type="text" name="login"> - логин</p> <p><input type="password" name="pass"> - пароль</p> <p><input type="submit"></p></form>
Код: Выделить всё
<ul><li><a href="index.php">Войти</a></li><li><a href="main.php">Главная</a></li><li><a href="notif.php">Уведомления</a></li><li><a href="exit.php">Выйти</a></li></ul>
Код: Выделить всё
<?phpheader("Content-Type: text/html; charset=utf-8");setcookie("login","");setcookie("pass","");include("links.html");?>
Код: Выделить всё
<?phpheader("Content-Type: text/html; charset=utf-8"); date_default_timezone_set("Europe/London");require_once("../config.php"); $db = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);$db->set_charset("utf8"); $resp = $db->query('SELECT COUNT(`'.USERS_TABLE_COLLUMN_UID.'`) as count FROM `'.USERS_TABLE_NAME.'`');$row = $resp->fetch_assoc();$max = floor($row['count']/100)+1;?><!DOCTYPE html><html><head> <meta charset="UTF-8"> <title>Уведомления</title> <script type="text/javascript" src="jquery.min.js"></script> <style> #mess { width:400px; height:200px; } #log { background:black; color:white; padding:30px; } </style> <script type="text/javascript"> function send(text,counter,max) { $.ajax({ url: 'send.php', type: 'POST', data: {'text':text,'offset':counter*100}, success: function(data) { $('#log').append(data+'</br>'); if(counter < max-1) send(text,counter+1,max); } }); } </script></head><body><? include("links.html"); ?><h1>ОТПРАВКА УВЕДОМЛЕНИЙ!</h1><input type='textarea' id="mess"><a href="#" onclick="send($('#mess').val(),0,<?php echo $max; ?>);"><h3>ОТПРАВИТЬ!</h3></a></br></br></br></br><h4>ЛОГ...</h4><div id="log"></div></body></html>
Код: Выделить всё
<?phpheader("Content-Type: text/html; charset=utf-8");date_default_timezone_set("Europe/London"); require_once("../config.php");require_once("../vkapi.class.php");require_once("../user.class.php"); $log = user::checkVar( $_COOKIE['login'] );$pass = user::checkVar( $_COOKIE['pass'] ); if($log != ADMIN || $pass != ADMIN_PASS) { exit("не туда попал:)");} if(!isset($_POST['offset'])) exit('Что-то не так...');if(!isset($_POST['text'])) exit('Нет сообщения'); $offset = intval($_POST['offset']);$text = $_POST['text']; $db = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);$db->set_charset("utf8"); $resp = $db->query('SELECT `'.USERS_TABLE_COLLUMN_UID.'` FROM `'.USERS_TABLE_NAME.'` LIMIT '.$offset.',100'); $need = $resp->num_rows < 100 ? $resp->num_rows-1 : 99; $ids = "";$count = 0;while($row = $resp->fetch_assoc()) { $ids .= $row[USERS_TABLE_COLLUMN_UID]; if($count !== $need) $ids .= ','; $count++;} $VK = new vkapi(APP_ID, APP_SECRET);$res = $VK->api('secure.sendNotification', array('user_ids' => $ids, 'message' => $text)); exit('В позиции от '.$offset.' к '.($offset+100).' отправлено им: '.$res['response']);?>
Код: Выделить всё
<?phpheader("Content-Type: text/html; charset=utf-8");date_default_timezone_set("Europe/London");require_once("../user.class.php"); if(!isset($_COOKIE['login'])) { setcookie("login", user::checkVar($_GET['login']) ); setcookie("pass", user::checkVar($_GET['pass']) );}include("links.html"); echo "Привет, ".$_COOKIE['login'];?>
https://ajax.googleapis.com/ajax/libs/j ... ery.min.js
итог...
если вы все сделали как в уроке(скопировали код, разместили правильно файлы), правильно поменяли данные в файле настроек - config.php, то все будет работать...
если есть вопросы - задавайте)
Удачи