home
/
u529748449
/
domains
/
borabilhete.com
/
public_html
/
public
➕ New
📤 Upload
✎ Editing:
cadastro.php
← Back
<?php session_start(); require_once __DIR__ . '/../admin/conexao.php'; $erro = ''; $nome = $email = $cpf = $whatsapp = ''; // Helpers $digits = fn($s) => preg_replace('/\D+/', '', (string)$s); if ($_SERVER['REQUEST_METHOD'] === 'POST') { $nome = trim($_POST['nome'] ?? ''); $cpf = $digits($_POST['cpf'] ?? ''); $whatsapp = $digits($_POST['whatsapp'] ?? ($_POST['telefone'] ?? '')); $email = trim($_POST['email'] ?? ''); $senhaRaw = (string)($_POST['senha'] ?? ''); // Validações simples if ($nome === '' || $cpf === '' || $email === '' || $senhaRaw === '') { $erro = 'Preencha todos os campos.'; } elseif (strlen($cpf) !== 11) { $erro = 'CPF inválido.'; } elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) { $erro = 'E-mail inválido.'; } elseif (strlen($senhaRaw) < 6) { $erro = 'A senha deve ter pelo menos 6 caracteres.'; } if (!$erro) { // Já existe CPF? $sql = "SELECT id FROM clientes WHERE REPLACE(REPLACE(REPLACE(cpf, '.', ''), '-', ''), ' ', '') = ? LIMIT 1"; $st = $conn->prepare($sql); $st->bind_param('s', $cpf); $st->execute(); $st->store_result(); if ($st->num_rows > 0) { $erro = 'CPF já cadastrado.'; } else { // (Opcional) verificar e-mail duplicado $st->free_result(); $st->close(); $sqlEmail = "SELECT id FROM clientes WHERE LOWER(email)=LOWER(?) LIMIT 1"; $se = $conn->prepare($sqlEmail); $se->bind_param('s', $email); $se->execute(); $hasEmail = $se->get_result()->fetch_assoc(); $se->close(); if ($hasEmail) { $erro = 'E-mail já cadastrado.'; } else { // Inserir cliente $hash = password_hash($senhaRaw, PASSWORD_DEFAULT); $ins = $conn->prepare("INSERT INTO clientes (nome, cpf, whatsapp, email, senha) VALUES (?,?,?,?,?)"); $ins->bind_param('sssss', $nome, $cpf, $whatsapp, $email, $hash); if ($ins->execute()) { $_SESSION['cliente_id'] = $ins->insert_id; $_SESSION['cliente_nome'] = $nome; $ins->close(); // Redireciona conforme carrinho header('Location: ' . (!empty($_SESSION['dados_compra']) ? 'comprar.php' : 'meus_ingressos.php')); exit; } else { $erro = 'Erro ao cadastrar. Tente novamente.'; $ins->close(); } } } } } ?> <!DOCTYPE html> <html lang="pt-br"> <head> <meta charset="UTF-8" /> <title>Criar conta</title> <meta name="viewport" content="width=device-width, initial-scale=1" /> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.0/css/all.min.css" crossorigin="anonymous" referrerpolicy="no-referrer" /> <!-- CSS base do site (caminhos relativos à /public) --> <link rel="stylesheet" href="css/baseingressos.css"> <link rel="stylesheet" href="css/header.css"> <link rel="stylesheet" href="css/footer.css"> <style> /* ===== Página de Cadastro (escopo próprio) ===== */ body { padding-top: 70px; margin: 0; } .page-register{ padding: 32px 16px; } .register-card{ max-width: 560px; margin: 0 auto; background: #fff; padding: 28px; border-radius: 12px; box-shadow: 0 2px 12px rgba(0,0,0,.06); box-sizing: border-box; } .register-card *{ box-sizing: border-box; } .register-card h2{ margin: 0 0 10px; text-align: center; font-weight: 700; } .register-sub{ text-align:center; color:#666; font-size:14px; margin: 2px 0 14px; } /* Avisos */ .notice{ margin: 12px 0 14px; padding: 12px 14px; border-radius: 12px; border: 1px solid transparent; font-size: 15px; display: flex; gap: 10px; align-items: center; line-height: 1.35; } .notice i{ flex: 0 0 auto; } .notice.error{ background: #ffe8ec; border-color: #f5c2c7; color: #9f1239; } /* Formulário */ .register-form{ display: grid; grid-template-columns: 1fr 1fr; gap: 12px; } .register-form .full{ grid-column: 1 / -1; } label{ display:block; font-weight:600; margin-bottom:6px; } .input-wrap{ position: relative; } .input-wrap input{ width:100%; padding:12px 14px; border:1px solid #e5e7eb; border-radius:8px; font-size:15px; background:#fff; } /* campo senha com olho */ .input-wrap.has-eye input{ padding-right: 44px; } .toggle-eye{ position:absolute; right:12px; top:50%; transform:translateY(-50%); border:none; background:transparent; padding:6px; cursor:pointer; color:#666; line-height:0; } .btn-primary{ width:100%; padding:12px 16px; border:none; border-radius:8px; background:var(--cor-primaria); color:#fff; font-weight:600; cursor:pointer; transition: filter .2s ease; margin-top:4px; } .btn-primary:hover{ filter: brightness(.95); } .links{ margin-top: 10px; text-align: center; font-size: 14px; } .links a{ color: var(--cor-primaria); text-decoration: none; } .links a:hover{ text-decoration: underline; } @media (max-width: 640px){ .register-form{ grid-template-columns: 1fr; } } @media (max-width: 480px){ .page-register{ padding: 24px 12px; } .register-card{ padding: 22px; } } </style> </head> <body> <?php include __DIR__ . '/includes/header.php'; ?> <main class="page-register"> <section class="register-card"> <h2>Criar conta</h2> <p class="register-sub">Preencha seus dados para finalizar suas compras com rapidez e segurança.</p> <?php if (!empty($erro)): ?> <div class="notice error" role="alert" aria-live="assertive"> <i class="fa-solid fa-circle-exclamation"></i> <span><?= htmlspecialchars($erro) ?></span> </div> <?php endif; ?> <form class="register-form" method="post" action="" novalidate> <div class="full"> <label for="nome">Nome completo</label> <div class="input-wrap"> <input type="text" id="nome" name="nome" required placeholder="Seu nome completo" value="<?= htmlspecialchars($nome) ?>"> </div> </div> <div> <label for="cpf">CPF</label> <div class="input-wrap"> <input type="text" id="cpf" name="cpf" inputmode="numeric" maxlength="14" required placeholder="000.000.000-00" value="<?= htmlspecialchars($cpf) ?>"> </div> </div> <div> <label for="whatsapp">WhatsApp</label> <div class="input-wrap"> <input type="text" id="whatsapp" name="whatsapp" inputmode="tel" maxlength="16" required placeholder="(99) 99999-9999" value="<?= htmlspecialchars($whatsapp) ?>"> </div> </div> <div class="full"> <label for="email">E-mail</label> <div class="input-wrap"> <input type="email" id="email" name="email" required placeholder="seuemail@dominio.com" value="<?= htmlspecialchars($email) ?>"> </div> </div> <div class="full"> <label for="senha">Senha</label> <div class="input-wrap has-eye"> <input type="password" id="senha" name="senha" minlength="6" required placeholder="mínimo 6 caracteres" autocomplete="new-password"> <button type="button" class="toggle-eye" data-target="senha" aria-label="Mostrar/ocultar senha"> <i class="fa-regular fa-eye"></i> </button> </div> </div> <div class="full"> <button type="submit" class="btn-primary">Criar conta</button> </div> </form> <div class="links"> Já tem conta? <a href="login.php">Entrar</a> </div> </section> </main> <?php include __DIR__ . '/footer.php'; ?> <script> // Mascara CPF const cpfInput = document.getElementById('cpf'); if (cpfInput) { cpfInput.addEventListener('input', () => { let v = cpfInput.value.replace(/\D/g, '').slice(0,11); if (v.length > 9) v = v.replace(/(\d{3})(\d{3})(\d{3})(\d{1,2}).*/, '$1.$2.$3-$4'); else if (v.length > 6) v = v.replace(/(\d{3})(\d{3})(\d{1,3}).*/, '$1.$2.$3'); else if (v.length > 3) v = v.replace(/(\d{3})(\d{1,3}).*/, '$1.$2'); cpfInput.value = v; }); } // Mascara WhatsApp const wa = document.getElementById('whatsapp'); if (wa) { wa.addEventListener('input', () => { let v = wa.value.replace(/\D/g, '').slice(0,11); if (v.length > 6) v = v.replace(/(\d{2})(\d{5})(\d{1,4}).*/, '($1) $2-$3'); else if (v.length > 2) v = v.replace(/(\d{2})(\d{1,5}).*/, '($1) $2'); else if (v.length > 0) v = v.replace(/(\d{1,2}).*/, '($1'); wa.value = v; }); } // Mostrar/ocultar senha document.querySelectorAll('.toggle-eye').forEach(btn => { btn.addEventListener('click', () => { const id = btn.getAttribute('data-target'); const input = document.getElementById(id); if (!input) return; const isPwd = input.type === 'password'; input.type = isPwd ? 'text' : 'password'; btn.innerHTML = isPwd ? '<i class="fa-regular fa-eye-slash"></i>' : '<i class="fa-regular fa-eye"></i>'; }); }); </script> </body> </html>
💾 Save Changes
Cancel
📤 Upload File
×
Select File
Upload
Cancel
➕ Create New
×
Type
📄 File
📁 Folder
Name
Create
Cancel
✎ Rename Item
×
Current Name
New Name
Rename
Cancel
🔐 Change Permissions
×
Target File
Permission (e.g., 0755, 0644)
0755
0644
0777
Apply
Cancel