prepare('SELECT id,name,email,password_hash,role,is_active FROM users WHERE email=? LIMIT 1');
$stmt->bind_param('s', $email); $stmt->execute(); $res = $stmt->get_result()->fetch_assoc();
if ($res && (int)$res['is_active']===1 && password_verify($pwd, $res['password_hash'])) {
$_SESSION['uid']=(int)$res['id']; $_SESSION['name']=$res['name']; $_SESSION['role']=$res['role'];
} else { $error='Credenciales inválidas'; }
}
$logged = isset($_SESSION['uid']);
?>
Control horario – Digency
Digency · Control horario
=htmlspecialchars($error)?>
Hola, =htmlspecialchars($_SESSION['name'])?>
Salir
Fichar
Activa tu ubicación y pulsa el botón.
Entrada
Salida
Mis registros
prepare('SELECT id,type,lat,lng,accuracy,created_at FROM punches WHERE user_id=? AND created_at>=? AND created_at ORDER BY created_at DESC');
$stmt->bind_param('iss',$uid,$from,$toPlus); $stmt->execute(); $rows=$stmt->get_result()->fetch_all(MYSQLI_ASSOC);
?>
Fecha/Hora Tipo Ubicación Precisión (m)
=htmlspecialchars($r['created_at'])?>
=($r['type']==='in'?'Entrada':'Salida')?>
Ver mapa
-
=htmlspecialchars($r['accuracy'] ?? '')?>
Admin – Exportación global