Суть вопроса в следующем у меня в мини приложение есть подключение с помощью тон кошелька на странице
auth.php и если его статус подключен то у нас создается сессия и идет перенаправление на
index.php, иначе если статус кошелька отключен то у нас идет запрос на
logout.php для удаления сессии и перенаправление на страницу авторизации. Но так получилось что мне саму кнопку кошелька
<div id="connect-wallet"></div>
нужно разместить на странице профиля что бы пользователь мог сделать выход то меня перенаправляет на
index.php так как сессия активна а мне этого не как не нужно. А если я размещу кнопку в
index.php то идет постоянная перезагрузка страницы. Как это все дело можно подкорректировать что бы если я размещал кнопку на странице профиля то перенаправление на
index.php не происходило?
Вот код скрипта
async function init() {
// Проверка доступности Telegram WebApp API
if (!window.Telegram || !window.Telegram.WebApp) {
console.error('Telegram WebApp API недоступен.');
return;
}
// Подписка на изменения статуса подключения кошелька
const unsubscribe = tonConnectUI.onStatusChange(async (walletAndwalletInfo) => {
const currentAccount = walletAndwalletInfo?.account;
const currentWalletInfo = walletAndwalletInfo?.walletInfo;
const isConnected = tonConnectUI.connected;
if (isConnected) {
console.log("Текущий аккаунт:", currentAccount);
// Формируем данные для отправки на сервер
const usersData = {
query_id: tg.initDataUnsafe.query_id,
user: {
id: userInfo.id,
first_name: userInfo.first_name,
last_name: userInfo.last_name,
username: userInfo.username,
language_code: userInfo.language_code
},
referrer_id: referrerId,
ref_url: referralLink,
auth_date: tg.initDataUnsafe.auth_date,
hash: tg.initDataUnsafe.hash,
wallet_address: currentAccount.address
};
console.log('Generated User Data:', usersData);
// Отправка данных на сервер
await sendUserDataToDB(usersData);
} else {
// Запрос к серверу для очистки сессии
fetch('./logout.php', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
}
})
.then(response => response.json())
.then(data => {
if (data.status === 'success') {
console.log('Сессия успешно завершена на сервере.');
// Перенаправление на auth.php
setTimeout(() => {window.location.href = './auth.php'}, 500);
} else {
console.error('Ошибка при завершении сессии на сервере.');
}
})
.catch(error => {
console.error('Ошибка сети при запросе на logout.php:', error);
});
}
});
}
// Функция для отправки данных на сервер
async function sendUserDataToDB(usersData) {
try {
const response = await fetch('./auth_post.php', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(usersData)
});
if (response.ok) {
const data = await response.json();
if (data.status === 'success') {
console.log('Пользователь успешно авторизован.');
setTimeout(() => {window.location.href = './index.php'}, 500); // Перенаправление на указанный URL
} else {
console.error('Ошибка авторизации:', data);
}
} else {
console.error('Ошибка сервера:', await response.text());
}
} catch (error) {
console.error('Ошибка при отправке данных:', error);
}
}
// Инициализация
init();
Пробовал добавить код который не перенаправляет на index.php если находится на определенных страницах
// Список страниц, на которых не должно происходить перенаправление
const excludedPages = ["profile.php", "ico.php"];
// Проверка текущего URL
const currentUrl = window.location.href;
// Проверяем, если текущий URL соответствует одной из исключённых страниц
const isExcludedPage = excludedPages.some(page => currentUrl.includes(page));
// Перенаправление на index.php, только если это не одна из исключённых страниц
if (!excludedPages.some(page => window.location.href.includes(page))) {
setTimeout(() => {window.location.href = './index.php'}, 500);
}
но теперь если я нахожусь на
auth.php с подключенным кошельком то меня не перенаправляет автоматически на
index.php а только после перезагрузки страницы.