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
// ---------------------------------------
?>
Área Restringida / Restricted Area
$erro"; } ?>Senha (Demo): ( acesso 1 ? "s" : ""); ?>)
Contraseña (Demo): ( acceso 1 ? "s" : ""); ?>) / Demo Password: ( access 1 ? "es" : ""); ?>)
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 .