<?php
/*
 * PHP2Shell-selvtjek (CVE-2026-109618 og CVE-2026-109619) fra ITMotor ApS
 *
 * 1. Læg filen i hjemmesidens rodmappe (samme mappe som forsiden).
 * 2. Åbn https://ditdomæne.dk/php-tjek.php i browseren.
 *
 * Filen viser kun PHP-versionen og sletter sig selv, når den er vist.
 * Virker på alle PHP-versioner fra 5.4.
 */
$fixed = array('8.5' => '8.5.12', '8.4' => '8.4.27', '8.3' => '8.3.36', '8.2' => '8.2.35');
$min = '8.2';

$v = PHP_MAJOR_VERSION . '.' . PHP_MINOR_VERSION . '.' . PHP_RELEASE_VERSION;
$branch = PHP_MAJOR_VERSION . '.' . PHP_MINOR_VERSION;
$extra = strtolower(PHP_EXTRA_VERSION);
$distro = '';
if (strpos($extra, 'sury') === false) {
    if (strpos($extra, 'ubuntu') !== false) {
        $distro = 'Ubuntu';
    } elseif (strpos($extra, 'deb') !== false) {
        $distro = 'Debian';
    } elseif (preg_match('~el\d~', $extra)) {
        $distro = 'Red Hat';
    }
}

if (version_compare($branch, $min, '<')) {
    $tone = 'bad';
    $title = 'Forældet PHP';
    $msg = 'PHP ' . $branch . ' får ingen officiel rettelse for PHP2Shell. Opgrader til PHP ' . $min . ' eller nyere.';
} elseif (isset($fixed[$branch])) {
    if (version_compare($v, $fixed[$branch], '>=')) {
        $tone = 'ok';
        $title = 'Opdateret';
        $msg = 'PHP ' . $v . ' indeholder rettelsen for PHP2Shell.';
    } elseif ($distro !== '') {
        $tone = 'warn';
        $title = 'Kan ikke afgøres';
        $msg = 'PHP ' . $v . ' kommer fra en ' . $distro . '-pakke, som kan være rettet uden nyt versionsnummer. Spørg din hostingudbyder.';
    } else {
        $tone = 'bad';
        $title = 'Ikke opdateret';
        $msg = 'PHP ' . $v . ' er sårbar. Opdatér til PHP ' . $fixed[$branch] . ' eller nyere, og genstart PHP bagefter.';
    }
} else {
    $tone = 'warn';
    $title = 'Ukendt version';
    $msg = 'PHP ' . $branch . ' er nyere end de versioner, rettelserne er udgivet til. Tjek status på php.net.';
}

$deleted = @unlink(__FILE__);
$colors = array('ok' => '#17704A', 'bad' => '#B42318', 'warn' => '#9A5B00');

header('Content-Type: text/html; charset=utf-8');
header('Cache-Control: no-store');
header('X-Robots-Tag: noindex');
function h($s) { return htmlspecialchars($s, ENT_QUOTES, 'UTF-8'); }
?><!doctype html>
<html lang="da">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="robots" content="noindex">
<title>PHP2Shell-selvtjek</title>
</head>
<body style="margin:0;font:17px/1.55 system-ui,sans-serif;background:#F2F3F8;color:#191B32">
<main style="max-width:640px;margin:0 auto;padding:48px 20px">
<p style="margin:0 0 8px;color:#585D7A">PHP2Shell-selvtjek</p>
<h1 style="margin:0;font-size:40px;line-height:1.1;color:<?php echo $colors[$tone]; ?>"><?php echo h($title); ?></h1>
<p style="margin:8px 0 24px;font-size:56px;font-weight:800;line-height:1;color:<?php echo $colors[$tone]; ?>">PHP <?php echo h($v); ?></p>
<p style="margin:0 0 16px"><?php echo h($msg); ?></p>
<p style="margin:0 0 16px;color:#585D7A">Fuld version: <?php echo h(PHP_VERSION); ?>, handler: <?php echo h(PHP_SAPI); ?></p>
<?php if ($deleted) { ?>
<p style="margin:0 0 16px;color:#585D7A">Filen er slettet fra serveren.</p>
<?php } else { ?>
<p style="margin:0 0 16px;padding:12px 16px;background:#FBF0DC;color:#5C3700">Filen kunne ikke slette sig selv. Slet php-tjek.php fra serveren manuelt.</p>
<?php } ?>
<p style="margin:32px 0 0;color:#585D7A">Brug for hjælp? ITMotor ApS, <a href="mailto:info@itmotor.dk" style="color:inherit">info@itmotor.dk</a></p>
</main>
</body>
</html>
