setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch (PDOException $e) { die("Erro de conexão à BD: " . $e->getMessage()); } // --------------------------------------- // 2) DEFINIR VARIÁVEIS: SENHA DEMO, LIMITE, IP // --------------------------------------- $password_demo = "123"; // Exemplo $limite_demo = 12; $ip_usuario = $_SERVER['REMOTE_ADDR']; // --------------------------------------- // 3) LER DA TABELA 'demo_acessos' O NÚMERO DE ACESSOS JÁ USADOS PARA ESTE IP // --------------------------------------- $stmt = $pdo->prepare("SELECT acessos FROM demo_acessos WHERE ip = ?"); $stmt->execute([$ip_usuario]); $row = $stmt->fetch(PDO::FETCH_ASSOC); if ($row) { $demo_acessos = intval($row['acessos']); } else { $demo_acessos = 0; // Se quiseres inserir logo o registo: $stmtInsert = $pdo->prepare("INSERT INTO demo_acessos (ip, acessos, last_access) VALUES (?, 0, NOW())"); $stmtInsert->execute([$ip_usuario]); } // --------------------------------------- // 4) CARREGAR AS CREDENCIAIS ILIMITADAS DE 'unlimited_credentials.php' // (ajusta para o caminho certo no teu servidor) // --------------------------------------- $unlimitedFile = __DIR__ . '/protected_configs/unlimited_credentials.php'; // ou "/home/SEU_USUARIO/public_html/corkfit/protected_configs/unlimited_credentials.php" if (file_exists($unlimitedFile)) { $unlimited_credentials = require $unlimitedFile; } else { $unlimited_credentials = []; } // --------------------------------------- // 5) TRATAR O POST (LOGIN) // --------------------------------------- $erro = ""; if ($_SERVER["REQUEST_METHOD"] === "POST") { $input_password = trim($_POST["password"]); // 5.1) Se não digitou nada: if ($input_password === "") { $erro = "Por favor, insira a password."; } // 5.2) Se corresponde a uma credencial ilimitada elseif (isset($unlimited_credentials[$input_password])) { $_SESSION["acesso_autorizado"] = true; $_SESSION["modo_demo"] = false; $_SESSION["client_id"] = $unlimited_credentials[$input_password]; // Ex.: "eXi", "Cliente B", etc. // Registrar o acesso ilimitado na tabela "acessos_ilimitados" $stmt = $pdo->prepare("INSERT INTO acessos_ilimitados (ip, client, data_acesso) VALUES (?, ?, NOW())"); $stmt->execute([$ip_usuario, $_SESSION["client_id"]]); header("Location: corkfit.php"); exit; } // 5.3) Se for a password demo elseif ($input_password === $password_demo) { if ($demo_acessos < $limite_demo) { // OK: pode entrar em modo demo $_SESSION["acesso_autorizado"] = true; $_SESSION["modo_demo"] = true; // Incrementar o contador na BD $stmtUp = $pdo->prepare("UPDATE demo_acessos SET acessos = acessos + 1, last_access = NOW() WHERE ip = ?"); $stmtUp->execute([$ip_usuario]); header("Location: corkfit.php"); exit; } else { // Atingiu limite $erro = "Limite de acessos demo atingido. Solicite um acesso completo.
Límite de accesos demo alcanzado. Solicite un acceso completo.
Demo access limit reached. Request full access."; } } // 5.4) Senha incorreta else { $erro = "Senha incorreta! / ¡Contraseña incorrecta! / Incorrect password!"; } // Se houve erro, salva na sessão e redireciona (PRG) if ($erro !== "") { $_SESSION['erro'] = $erro; header("Location: logincorkfit.php"); exit; } } // --------------------------------------- // 6) REQUISIÇÃO GET: LER O ERRO DA SESSÃO (SE EXISTIR) // --------------------------------------- if ($_SERVER["REQUEST_METHOD"] === "GET") { if (isset($_SESSION['erro'])) { $erro = $_SESSION['erro']; unset($_SESSION['erro']); } else { $erro = ""; } } // --------------------------------------- // 7) CALCULAR ACESSOS DEMO RESTANTES // // Importante: volta a ler da BD cada vez que a página recarrega // (caso o user tenha feito login em outro browser e incrementado lá). // --------------------------------------- $stmt = $pdo->prepare("SELECT acessos FROM demo_acessos WHERE ip = ?"); $stmt->execute([$ip_usuario]); $row = $stmt->fetch(PDO::FETCH_ASSOC); $demo_acessos_atual = $row ? intval($row['acessos']) : 0; $acessos_restantes = $limite_demo - $demo_acessos_atual; if ($acessos_restantes < 0) { $acessos_restantes = 0; } // --------------------------------------- // 8) EXIBIR HTML // --------------------------------------- ?> Login - corkfit®
Logo

Área Restrita

Área Restringida / Restricted Area

$erro

"; } ?>

Senha (Demo): ( acesso 1 ? "s" : ""); ?>)

Contraseña (Demo): ( acceso 1 ? "s" : ""); ?>) / Demo Password: ( access 1 ? "es" : ""); ?>)


0) { echo "

Ainda tem {$acessos_restantes} " . ($acessos_restantes == 1 ? "acesso" : "acessos") . " demo.

"; echo "

Aún tiene {$acessos_restantes} " . ($acessos_restantes == 1 ? "acceso" : "accesos") . " demo / Still has {$acessos_restantes} demo " . ($acessos_restantes == 1 ? "access" : "accesses") . " available.

"; } else { echo "

Já não tem acesso Demo.

"; echo "

Ya no tiene acceso Demo / No Demo access available.

"; } ?>

Para acesso ilimitado / Para acceso ilimitado / For unlimited access : EMAIL .