Мод на Телеграмм заходить на другие страницы

Рассмотрим простой вариант авторизации на сайте с помощью Телеграм без использования официального виджета.

в бот мы передадим значение в параметре start, которое обработаем и запишем в базу вместе с данными пользователя

запустим JS скрипт, который будет с интервалом в 2 секунды делать AJAX запрос на сервер для проверки появления в базе записи переданного в бот значения, и в случае обнаружения произведет авторизацию пользователя

Для начала создадим таблицу users в базе MySQL (используйте кодировку utf8mb4_unicode_ci )

CREATE TABLE IF NOT EXISTS `users` ( `id` int(11) NOT NULL AUTO_INCREMENT, `telegram_id` bigint(20) DEFAULT NULL, `first_name` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, `last_name` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, `username` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, `auth_key` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

index.php

Этот файл будет выводить ссылку на авторизацию через бот в случае, если пользователь не авторизован. JS скрипт вешает на ссылку прослушку на событие click с функцией, которая через 2-х секундный интервал делает запрос на сервер. Когда ответ с сервера возвращается положительный, скрипт перезагружает страницу.

Если у пользователя обнаружена кука token то скрипт делает запрос в бд и получает первое и второе имя пользователя, которые выводит вместе с ссылкой на выход. При обработке действия «Выход», скрипт просто удаляет куку и перезагружаем страницу.

Не забудьте указать ___USERNAME__ВАШЕГО__БОТА___

else < // подключаем соединение с БД require_once(«Db.php»); // создаем объект соединения $db = new Db(); // проверяем на авторизацию if($_COOKIE[‘token’]) < // проверяем на корректность if(!preg_match(‘~^[a-f0-9]+$~’, $_COOKIE[‘token’])) < // выходим если проверка не прошла exit(); >// делаем запрос в БД $order = $db->connect()->prepare(«SELECT * FROM users WHERE auth_key = :key LIMIT 1″); $order->execute([‘key’ => $_COOKIE[‘token’]]); // если запись есть то работаем if ($order->rowCount() > 0) < $orderRaw = $order->fetch(); // Выводим имя echo trim($orderRaw[‘first_name’] .’ ‘.$orderRaw[‘last_name’]).» | «; // ссылка на выход echo «Выход»; > else < // удаляем кукку header(«Location: index.php?act=logout»); >> else < // генерируем ключ $key = md5(rand(0, 1000)); /////////////////////////////////////////////// //// username Bot /////////////////////////////////////////////// $bot = «___USERNAME__ВАШЕГО__БОТА___»; // создаем ссылки на авторизацию echo » jQuery(function ($) < $(«body»).on(«click», «.link_auth», function () < var auth_key = $(this).data(«key»); var timerId = setInterval(function () < $.ajax(< type: «GET», dataType: «json», url: «checkKey.php», data: < key: auth_key >, success: function (data) < if (data.result == «success») < clearInterval(timerId); setTimeout(function () < location.reload(); >, 1000); > > >); >, 2000); >); >); > ?>

Еще по теме:  Боковая панель с эмодзи в Телеграмме

webHook.php

init(); ?>

Auth.php

После инициализации объекта, передаем данные от Bot API в роутер, в котором определяем, что делать с данными. Нас интересует объект message с переданным значением параметра start в виде ключа из 32 символов. Его мы передаем в метод авторизации. По telegram_id узнаем, есть ли такой пользователь у нас в базе, если есть, то обновляем ключ, если нет то добавляем пользователя в базу, при этом записываем все нужные нам данные и ключ для авторизации.

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

Не забудьте указать ___TOKEN__ВАШЕГО__БОТА___

Db.php

Класс для получения соединения с базой данных. Укажите данные ваших настроек базы данных.

pdo)) < $this->setPdo(); > return $this->pdo; > /** * Создаем соединение с БД */ private function setPdo() < // задаем тип БД, хост, имя базы данных и чарсет $dsn = «mysql:host=».$this->host.»;dbname=».$this->db.»;charset=».$this->charset; // дополнительные опции $opt = [ // способ обработки ошибок — режим исключений PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, // тип получаемого результата по-умолчанию — ассоциативный массив PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, // отключаем эмуляцию подготовленных запросов PDO::ATTR_EMULATE_PREPARES => false, // определяем кодировку запросов PDO::MYSQL_ATTR_INIT_COMMAND => «SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci» ]; // // записываем объект PDO в свойство $this->pdo $this->pdo = new PDO($dsn, $this->user, $this->pass, $opt); > > ?>

checkKey.php

Этот файл принимает AJAX запрос со страницы index.php когда пользователь нажимает ссылку для авторизации. Он по ключу проверяет наличии записи в базе, и в случае обнаружения обновляет ключ, записывает куки и возвращает положительный результат.

Еще по теме:  Что значит тчк в Телеграмме

+$~’, $key)) < exit(json_encode([‘result’=>’error’])); > // создаем массив для возврата результата $data = []; // обращаемся в БД — проверяем наличие записи с переданным ключом $order = $db->connect()->prepare(«SELECT * FROM users WHERE auth_key = :key LIMIT 1»); $order->execute([‘key’ => $key]); // если запись есть то работаем if ($order->rowCount() > 0) < $orderRaw = $order->fetch(); // создаем новый ключ $new_key = md5(rand(0, 1000));; // записываем новый ключ в БД $update = $db->connect()->prepare(«UPDATE users SET auth_key = :new_key WHERE // если обновили то авторизуем if ($update->execute([‘id’ => $orderRaw[‘id’], ‘new_key’ => $new_key])) < // ставим куку setcookie(‘token’, $new_key); // возвращаем результат $data[‘result’] = «success»; >else < $data[‘result’] = «error»; >> else < $data[‘result’] = «error»; >// возвращаем результат echo json_encode($data); ?>

По итогу у нас получилась вполне рабочая авторизация на сайт через Телеграм без использования официального виджета Telegram. Файлы можно скачать и использовать на свое усмотрение.

Источник: imakebots.ru

Web.telegram.org заблокирован. Как мне зайти?

Несмотря на то, что Роскомнадзор постепенно идёт на попятную, снимая блокировку с целых подсетей, веб-версия телеграмма пока не работает без VPN и прокси. С мобильными приложениями мы уже разобрались, теперь настала очередь для тех, кто хочет общаться в мессенджере через браузер.

На данный момент, при попытке зайти на web.telegram.org нас ожидает ошибка «Не удается получить доступ к сайту». Для обхода блокировок и сохранения анонимности самый простой способ — использовать расширения для браузера Google Chrome.

Самый популярный из них — Browsec VPN . Так же мы рассмотрим и дополнительный вариант решения проблемы — установку десктопного приложения для Windows.

Вариант 1. Расширения под Google Chrome

Browsec VPN

Одно из самых популярных решений для анонимного серфинга в сети и обхода нужного нам запрета на веб-версию Телеграм. Помимо того, что расширение помогает обойти региональные запреты (сайты, которые запрещены в России, доступны из других стран), оно подменяет ваш IP-адрес и шифрует трафик, что тоже немаловажно.

Еще по теме:  Как раскрутить Телеграм канал с 0

Специально для Вас: Мой сайт недоступен. Что мне делать?

После установки в конце адресной строки появится значок в виде земного шара — для активации кликните на него и нажмите на кнопку Protect Me, после чего вам автоматически подберется прокси из другой страны. Сменить страну можно через нажатие кнопки «Change». Стоит заметить, что базовый функционал приложения — бесплатен.

Тест прошел удачно: сайт открылся. Единственное, не забудьте поменять страну на Russia (прокси будет работать, не переживайте), чтобы верно авторизоваться в мессенджере:

Вариант 2. Приложение под Windows 10

hide.me VPN

Несмотря на противоречивые отзывы на Windows Store, с нашей целью — доступом в web.telegram.org приложение справляется. При переходе в магазин нажмите кнопку «Получить». Откроется встроенное приложение Store на Windows 10. Там нажимаем одноименную кнопку. После чего нажимайте кнопку «Запустить». В открывшимся окне выбирайте «Попробовать бесплатную версию».

UPDATE: Во время теста приложение вело себя крайне нестабильно, создание пробного аккаунта получилось только со второй попытки. Поэтому рекомендовать Hide.me как постоянное решение, к сожалению, мы не будем

Специально для Вас: Samsung Health не считает шаги: что делать

Кстати, купить подписчиков Телеграмм можно здесь.

Источник: mirdostupa.ru

Рейтинг
( Пока оценок нет )
Загрузка ...