1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.

Пишем простой вечный онлайн вконтакте на PHP

Тема в разделе "PHP", создана пользователем Fatal Error, 27 июл 2014.

  1. TopicStarter Overlay
    Fatal Error

    Fatal Error Новичок

    Регистрация:
    27.07.14
    Сообщения:
    7
    Симпатии:
    9
    Баллы:
    10
    Пол:
    Мужской
    И всё же в наше время данное предложение найти сложно, около недели назад мне понадобилось реализовать данную функцию на более чем 50ти аккаунтах, да, конечно же для заработка, так сказать я стал псевдо-маркетолгом [​IMG] , ну и вот собственно хочу поделится с вами своими наработками, писал конечно на коленке, делать из скриптов целый сервис я не стал(как сделал q00n).


    Для чего это нужно, и т.д объяснять конечно же можно долго, отвечу простым и понятным языком: Для увеличения продаж.

    [​IMG]

    Ну и собственно давайте приступим к написанию самого простого вконлайна, эти скрипты в сети я не нашёл, так как я делал конкретно: один скрипт на 100 акков и более. В сети я видел только на один (что и понятно [​IMG]).



    Итак, начнём делать наш собственный псевдо-сервис по вечному онлайну вконтакте!
    Первым делом скажу что я делал скрипт который взаимодействует БД mysql, но для данного примера рациональнее было бы юзать текстовый файл, просто отработка скрипта по времени и нагрузка на сервер будет гораздо меньше, так как мы юзаем только получения всех токенов и добавления токена в нашу базу. Это очень просто реализовать в текстовом варианте, но мы не будем искать лёгких путей, так как если вы захотите модернизировать данные скрипты то текстовые файлы уже будут чистой воды 'идиотизмом'.



    ШАГ №1

    Для начала создадим PHP файл с информацией о подключении к базе данных. Это нужно для того чтобы при смене пароля или логина не менять в каждом файле логи. Всё культурно в одном файле.



    Данный файл я обозвал db.inc.php , inc - не пугайтесь, данное название говорит нам о том что скрипт будет вложен в другой скрипт(делаю для удобства).



    В данном файле я прописываю логи для подключения к БД:


    PHP:
    <?php
        define
    ('DB_HOST''localhost');
        
    define('DB_LOGIN''root');
        
    define('DB_PASSWORD''password');
        
    define('DB_NAME''DataBaseName');
    ?>

    При объявлении переменных я использую константы, они нужны для того чтобы если вы забыли о какой либо переменной и объявили её, PHP интерпретатор выдал вам ошибку, константы изменять тоже не как нельзя!

    Мораль: Все завербованные переменные нужно объявлять в константу!



    Думаю что в пояснении этого PHP скрипта нечего не требуется, перейдём ко второму шагу.



    ШАГ №2



    Создадим базу данных, для этого мы можем написать PHP скрипт, я же незаморачивался и создал её в PHPMyAdmin со следующеми значениями:

    post-1-0-10322200-1396179013.jpg

    ШАГ №3



    Создадим скрипт добавления токена в БД. Данный скрипт я назвал addtoken.php

    Для этого будем передавать при GET запросе параметр token, реализовываем:


    PHP:
    <?php
        
    if(isset($_GET['token']) && !empty($_GET['token']){
            require 
    'db.inc.php';
            
    //Подключение к бд
            
    $conn_db mysqli_connect(DB_HOSTDB_LOGINDB_PASSWORDDB_NAME) or die(mysqli_error());
            
    //Добавляем токен
            
    $sql 'INSERT INTO tokens(token) VALUES ("' $_GET['token'] . '")';
            
    $result mysqli_query($conn_db$sql) or die(mysqli_error());
            
    mysqli_close($conn_db);
            echo 
    'Success added token';   
        }
    ?>

    Разберу всё по строчно, сначала мы проверяем через if, пришёл ли к нам параметр токен из GET запроса, проверка происходит сразу аж двумя функциями - isset и empty.

    1ая функция проверяет, пришла ли к нам переменная вообще, 2ая функция проверяет, пустая ли переменная, но у нас стоит ! перед началом функции, это означает что результат функции переворачивается, или отрицается, то есть empty = пустая, !empty = не пустая.



    Дальше идёт подключения той самой библиотеки о который шла речь выше. Советую использовать именно require, а не include, быстрее работает в плане выполнения скрипта.



    Дальше идёт коннект к бд mysql

    Код:
    $conn_db = mysqli_connect(DB_HOST, DB_LOGIN, DB_PASSWORD, DB_NAME) or die(mysqli_error());        

    Результатом в переменной $conn_db будет либо ресурс, либо ошибка при подключении БД.

    Дальше формируем запрос на вставку токена

    Код:
    $sql = 'INSERT INTO tokens(token) VALUES ("' . $_GET['token'] . '")';
    

    Подробнее о запросе велком в google.com



    Теперь давайте выполним сам запрос, который мы сформировали к бд mysql


    Код:
    $result = mysqli_query($conn_db, $sql) or die(mysqli_error());
    

    Если в результате запроса будет ошибка то мы её выведем и скрипт завершит себя, благодаря DIE().



    Затем закрываем соединение, и выводим сообщение о том что токен успешно добавлен в БД.


    ШАГ №4



    Самый важный шаг. Создание коннектера, выдавать сам статус мы будем через апи функцию account.setOnline

    Представим что наш токен = exe-team_token



    Тогда наш запрос будет выглядеть следующим образом


    Код:
    https://api.vk.com/method/account.setOnline?access_token=exe-team_token
    

    Ну вот вроде бы и всё, о теории, переходим к практике, напишем скрипт, который будет получать все токены, и каждым проходится по следующей ссылки с подстановкой токена из базы. Я реализовал саму отправку пакета GET через file_get_contents , но можно было бы и заюзать curl ,



    Реализация, данный скрипт я обозвал getonline.php:


    PHP:
    <?php
        
    require 'db.lic.php';
        
    //Подключение к бд
        
    $conn_db mysqli_connect(DB_HOSTDB_LOGINDB_PASSWORDDB_NAME) or die(mysqli_error());
        
    //Выбираем все токены
        
    $sql 'SELECT token FROM tokens';
        
    $result mysqli_query($conn_db$sql) or die(mysqli_error());
        
    mysqli_close($conn_db);
        while(
    $arr mysqli_fetch_assoc($result)){
            
    file_get_contents('https://api.vk.com/method/account.setOnline?access_token=' $arr['token']);
        }
    ?>

    Ну и тут добавить собственно говоря нечего, скрипт подобен тому что обозревался выше для добавления, за исключением SQL запроса [​IMG] , да, видимо по мимо php придётся ещё учить 100500 языков [​IMG] .

    В данном случае! Важное замечание, закрывать соединение с базой нужно обязательно тогда когда мы не будем больше к ней обращатся! Иначе будет нагрузка , сервер по мимо отправки GET пакетов будет ещё и держать связь с БД что не есть хорошо [​IMG] . Именно поэтому я сначала закрываю соединение затем начинаю выборку.


    Код:
    mysqli_close($conn_db);
        while($arr = mysqli_fetch_assoc($result)){
            file_get_contents('https://api.vk.com/method/account.setOnline?access_token=' . $arr['token']);
        }
    


    ШАГ №5



    Вешаем наш скрипт getonline.php на cron, об этом я напишу позже в продолжении статьи.



    [​IMG] . На этом всё, таким простым образом мы создаём самый самый простой сервис по вечному онлайну вконтакте.
    wolf84, Xpert™ и cerber нравится это.

Поделиться этой страницей