<?php
declare(strict_types=1);

header('Content-Type: text/html; charset=utf-8');
header('X-Content-Type-Options: nosniff');
header('Referrer-Policy: no-referrer');

$writeTest = __DIR__ . '/.ziz-write-test-' . bin2hex(random_bytes(6));
$writable = @file_put_contents($writeTest, 'test', LOCK_EX) !== false;
if ($writable) @unlink($writeTest);

$checks = [
    ['PHP 8.3 of hoger', version_compare(PHP_VERSION, '8.3.0', '>='), 'Gevonden: ' . PHP_VERSION],
    ['HTTPS/SSL actief', !empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off', 'Open dit bestand via https://'],
    ['OpenSSL beschikbaar', extension_loaded('openssl'), 'Nodig voor beveiligde SMTP.'],
    ['Mbstring beschikbaar', extension_loaded('mbstring'), 'Nodig voor namen met accenten.'],
    ['JSON beschikbaar', extension_loaded('json'), 'Nodig voor de appgegevens.'],
    ['Sessies beschikbaar', function_exists('session_start'), 'Nodig voor beveiligd inloggen.'],
    ['Uitgaande verbindingen mogelijk', function_exists('stream_socket_client'), 'De echte SMTP-login wordt tijdens installatie getest.'],
    ['Map beschrijfbaar', $writable, 'Nodig voor de beveiligde instellingen en verzendstatus.'],
];
$ready = !in_array(false, array_column($checks, 1), true);
?>
<!doctype html>
<html lang="nl">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width,initial-scale=1">
  <meta name="robots" content="noindex,nofollow">
  <title>Hostingcheck — Zaak in Zicht</title>
  <style>
    :root{color-scheme:dark;--bg:#091b14;--card:#102c20;--line:#29503c;--ok:#45cc8a;--bad:#ff7d7d;--text:#fff;--muted:#b9cabf}*{box-sizing:border-box}body{margin:0;background:linear-gradient(145deg,#07150f,#123826);color:var(--text);font:16px/1.5 system-ui,-apple-system,Segoe UI,sans-serif;min-height:100vh;padding:24px}main{max-width:720px;margin:auto}.card{background:var(--card);border:1px solid var(--line);border-radius:20px;padding:24px;box-shadow:0 18px 50px #0005}h1{margin:0 0 8px;font-size:clamp(26px,6vw,40px)}.lead{color:var(--muted);margin-top:0}.result{font-weight:800;font-size:20px;padding:14px 16px;border-radius:12px;background:#ffffff10;border-left:5px solid var(--ok)}.result.bad{border-color:var(--bad)}ul{list-style:none;padding:0;margin:22px 0 0}li{display:grid;grid-template-columns:28px 1fr;gap:10px;padding:13px 0;border-top:1px solid var(--line)}.icon{font-size:20px;color:var(--ok)}.fail .icon{color:var(--bad)}strong{display:block}small{display:block;color:var(--muted);margin-top:2px}.note{margin:22px 0 0;color:var(--muted);font-size:14px}code{background:#0004;padding:2px 5px;border-radius:5px}
  </style>
</head>
<body><main><section class="card">
  <h1>Kan de urenapp hier draaien?</h1>
  <p class="lead">Deze controle wijzigt niets aan je website. Alleen de schrijfcontrole maakt heel kort een leeg testbestand en verwijdert dit direct.</p>
  <p class="result<?= $ready ? '' : ' bad' ?>"><?= $ready ? 'Ja, deze hosting voldoet aan de technische basis.' : 'Nog niet: één of meer vereisten ontbreken.' ?></p>
  <ul><?php foreach ($checks as [$label,$ok,$detail]): ?><li class="<?= $ok?'ok':'fail' ?>"><span class="icon"><?= $ok?'✓':'✗' ?></span><span><strong><?= htmlspecialchars($label, ENT_QUOTES, 'UTF-8') ?></strong><small><?= htmlspecialchars($detail, ENT_QUOTES, 'UTF-8') ?></small></span></li><?php endforeach ?></ul>
  <p class="note">Een groene uitslag betekent dat de basis klopt. De SMTP-gegevens van je eigen mailbox worden pas tijdens de installatie veilig op je eigen server getest en opgeslagen. Verwijder <code>server-check.php</code> na de controle.</p>
</section></main></body></html>
