home
/
u529748449
/
domains
/
borabilhete.com
/
public_html
/
admin
➕ New
📤 Upload
✎ Editing:
login_produtor.php
← Back
<?php // admin/login_produtor.php session_start(); require_once __DIR__ . '/conexao.php'; $erro = ''; // Processa login do produtor if ($_SERVER['REQUEST_METHOD'] === 'POST') { $email = trim($_POST['email'] ?? ''); $senha = (string)($_POST['senha'] ?? ''); if ($email === '' || $senha === '') { $erro = 'Preencha todos os campos.'; } else { $sql = "SELECT id, nome, email, role, empresa_id, senha, ativo FROM produtores WHERE email = ? LIMIT 1"; $stmt = $conn->prepare($sql); if (!$stmt) { $erro = 'Erro interno.'; } else { $stmt->bind_param('s', $email); $stmt->execute(); $res = $stmt->get_result(); $prod = $res->fetch_assoc(); $stmt->close(); if ($prod) { if ((int)$prod['ativo'] !== 1) { $erro = 'E-mail ou senha inválidos.'; } else { $hashNoBanco = (string)$prod['senha']; $ok = false; // Bcrypt ($2y$, $2a$, $2b$) if (preg_match('/^\$2[aby]\$/', $hashNoBanco)) { $ok = password_verify($senha, $hashNoBanco); // (Opcional) rehash se necessário: // if ($ok && password_needs_rehash($hashNoBanco, PASSWORD_DEFAULT)) { // $novo = password_hash($senha, PASSWORD_DEFAULT); // $up = $conn->prepare("UPDATE produtores SET senha=? WHERE id=?"); // $up->bind_param("si", $novo, $prod['id']); // $up->execute(); $up->close(); // } } else { // Legado SHA-256 (hex) $sha = hash('sha256', $senha); $ok = hash_equals(strtolower($hashNoBanco), strtolower($sha)); // (Opcional) migrar para bcrypt ao primeiro login OK: // if ($ok) { // $novo = password_hash($senha, PASSWORD_DEFAULT); // $up = $conn->prepare("UPDATE produtores SET senha=? WHERE id=?"); // $up->bind_param("si", $novo, $prod['id']); // $up->execute(); $up->close(); // } } if ($ok) { $_SESSION['produtor_logado'] = true; $_SESSION['produtor_id'] = (int)$prod['id']; $_SESSION['produtor_nome'] = $prod['nome']; $_SESSION['role'] = $prod['role']; // admin|produtor|agente $_SESSION['empresa_id'] = (int)($prod['empresa_id'] ?? 0); if ($prod['role'] === 'agente') { header('Location: validar_ingresso.php'); exit; } header('Location: index.php'); exit; } else { $erro = 'E-mail ou senha inválidos.'; } } } else { $erro = 'E-mail ou senha inválidos.'; } } } } ?> <!DOCTYPE html> <html lang="pt-br"> <head> <meta charset="UTF-8" /> <title>Painel do Produtor — Entrar</title> <meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" /> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.0/css/all.min.css" crossorigin="anonymous" referrerpolicy="no-referrer" /> <!-- Reutiliza o tema base do site (caminho relativo a /admin) --> <link rel="stylesheet" href="../public/css/baseingressos.css"> <style> /* ===== Login Produtor (coeso com o login público) ===== */ body{ margin:0; background:#f6f7f9; color:#111; } .page-login{ min-height: 100vh; display:flex; align-items:center; justify-content:center; padding: 24px 16px; } .container-login{ width: 100%; max-width: 520px; background:#fff; padding: 28px; border-radius: 12px; box-shadow: 0 2px 12px rgba(0,0,0,.06); box-sizing: border-box; } .container-login *{ box-sizing: border-box; } .brand{ display:flex; align-items:center; justify-content:center; gap:10px; margin-bottom:6px; } .brand .logo{ width:28px; height:28px; border-radius:8px; background: var(--cor-primaria); } .brand .title{ font-weight:800; font-size:18px; letter-spacing:.3px; } h2{ margin: 8px 0 16px; text-align:center; font-weight: 700; } .login-alert{ margin: 10px 0 14px; padding: 10px 12px; border-radius: 8px; background: #ffe8ec; border: 1px solid #f5c2c7; color: #9f1239; font-size: 14px; display: flex; align-items: center; gap: 8px; } .login-form{ display:flex; flex-direction:column; gap:12px; } .form-group label{ display:block; font-weight:600; margin-bottom:6px; } .form-group input[type="email"], .form-group input[type="password"], .form-group input[type="text"]{ width:100%; padding:12px 14px; border:1px solid #e5e7eb; border-radius:8px; font-size:15px; background:#fff; } .form-group.has-icon{ position: relative; } .form-group.has-icon input{ padding-right: 44px; } .toggle-pass{ position:absolute; right:12px; top:50%; transform: translateY(-50%); border:none; background:transparent; padding:6px; cursor:pointer; color:#666; line-height:0; } .btn-submit{ 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-submit:hover{ filter: brightness(.95); } .links-stack{ text-align:center; margin-top:10px; } .links-stack .link{ color: var(--cor-primaria); text-decoration:none; } .links-stack .link:hover{ text-decoration: underline; } @media (max-width: 480px){ .container-login{ padding: 22px; } } </style> </head> <body> <main class="page-login" role="main"> <section class="container-login" role="region" aria-labelledby="titulo-login-produtor"> <div class="brand" aria-hidden="true"> <span class="logo"></span> <span class="title">Painel do Produtor</span> </div> <h2 id="titulo-login-produtor">Entrar</h2> <?php if (!empty($erro)): ?> <div class="login-alert" role="alert"> <i class="fa-solid fa-circle-exclamation" aria-hidden="true"></i> <?= htmlspecialchars($erro) ?> </div> <?php endif; ?> <form method="post" autocomplete="off" class="login-form" novalidate> <div class="form-group"> <label for="email">E-mail</label> <input type="email" id="email" name="email" required autocomplete="username" autocapitalize="none" autocorrect="off" spellcheck="false" placeholder="seuemail@dominio.com" value="<?= htmlspecialchars($_POST['email'] ?? '') ?>" > </div> <div class="form-group has-icon"> <label for="senha">Senha</label> <input type="password" id="senha" name="senha" required minlength="6" autocomplete="current-password" placeholder="Digite sua senha" > <button type="button" class="toggle-pass" aria-label="Mostrar senha" title="Mostrar senha"> <i class="fa-solid fa-eye" aria-hidden="true"></i> </button> </div> <button type="submit" class="btn-submit">Entrar</button> </form> <div class="links-stack"> <p><a class="link" href="esqueci_senha_produtor.php">Esqueci minha senha</a></p> <p>Quer vender com a gente? <br><a class="link" href="cadastro_produtor.php">Quero ser produtor</a></p> <p><a class="link" href="../public/login.php"><i class="fa-solid fa-arrow-left"></i> Voltar ao site</a></p> </div> </section> </main> <script> (function () { const btn = document.querySelector('.toggle-pass'); if (!btn) return; const input = document.getElementById('senha'); btn.addEventListener('click', function () { const isPwd = input.type === 'password'; input.type = isPwd ? 'text' : 'password'; btn.setAttribute('aria-label', isPwd ? 'Ocultar senha' : 'Mostrar senha'); btn.setAttribute('title', isPwd ? 'Ocultar senha' : 'Mostrar senha'); const icon = btn.querySelector('i'); icon.classList.toggle('fa-eye'); icon.classList.toggle('fa-eye-slash'); input.focus(); }); })(); </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