🎯 QR-Code Smart Redirector — Ein Code, viele Ziele, zeitgesteuert

QR-Code einmal drucken, Ziel dynamisch ändern. Nach Uhrzeit, Feature-Modus oder Landingpage. Mit Admin-Panel, DSGVO-Tracking und Alterserkennung via User-Agent.

PHPBootstrap 5QR-CodeTrackingAdmin-Panel

🚀 QR-Code gedruckt? Ziel jederzeit änderbar — ohne Neudruck!

Vereinbaren Sie ein unverbindliches Strategiegespräch

📞 02406 803 7603 ✉️ info@computerkumpel.de

📊 Business Value

QR-Codes auf Plakaten, Flyern oder Wahlkampfmaterial — aber das Ziel muss sich ändern können? Dieser Redirector macht's möglich: Ziel per Admin-Panel ändern, nach Uhrzeit routen, Feature-Kampagnen schalten.

Zeitsteuerung
4 Zeitfenster (0-6, 6-12, 12-18, 18-24) mit individuellen Ziel-Plattformen. Morgens YouTube, abends Instagram.
🔥
Feature-Modus
Zeitlich begrenztes Sonderziel mit Vorrang vor Zeitregeln. Perfekt für Events, neue Videos, Aktionen.
📊
DSGVO-Tracking
IP-Anonymisierung, Alterserkennung via User-Agent (TikTok, Instagram, YouTube Apps), optionale Geolocation.
🎛️
Admin-Panel
Bootstrap 5 UI mit Dark Mode, CSRF-Schutz, Session-Timeout, Passwort-Änderung. Alle Einstellungen in JSON-Config.

⚙️ Routing-Logik

1
🔍

Feature-Check

Feature aktiv + im Zeitraum? → Feature-Ziel hat absolute Priorität. Keine Zeitregel-Auswertung.

2

Zeitregel

Aktuelle Stunde (0-23) bestimmt das Ziel: 6-12 → YouTube, 12-18 → Instagram, 18-24 → TikTok, 0-6 → Website.

3
📊

Tracking loggen

Zeitstempel | anonymisierte IP | Referrer | User-Agent | Altersgruppe | gewähltes Ziel

4
➡️

Redirect

HTTP 302 auf das ermittelte Ziel. Oder Landingpage-Modus: Eigene Seite mit allen Plattform-Links.

💻 Code — Zeitgesteuerte Routing-Logik

Feature-Vorrang + Zeitregel-Fallback

// Feature-Ziel prüfen (hat Vorrang)
$feature = $config['feature'] ?? [];
$featureActive = false;
if (!empty($feature['active']) && !empty($feature['url'])) {
    $now = date('Y-m-d H:i');
    $from = $feature['from'] ?? null;
    $to = $feature['to'] ?? null;
    if ((empty($from) || $now >= $from) 
        && (empty($to) || $now <= $to)) {
        $featureActive = true;
    }
}

if ($featureActive) {
    $ziel = $feature['url'];
} else {
    // Ziel nach aktueller Stunde bestimmen
    $stunde = (int)date('G');
    $zielSchluessel = 'website'; // Default
    
    foreach ($config['zeitregeln'] as $bereich => $ziel) {
        list($start, $ende) = explode('-', $bereich);
        if ((int)$start === 0 && (int)$ende === 6) {
            if ($stunde >= 0 && $stunde < 6) {
                $zielSchluessel = $ziel; break;
            }
        } else {
            if ($stunde >= (int)$start && $stunde < (int)$ende) {
                $zielSchluessel = $ziel; break;
            }
        }
    }
    $ziel = $config['ziele'][$zielSchluessel];
}

// Weiterleitung
header("Location: $ziel");
exit;

💻 Code — DSGVO-Tracking mit Alterserkennung

IP-Anonymisierung + User-Agent Alterserkennung

// IP anonymisieren (letztes Oktett maskieren)
$ip = $_SERVER['REMOTE_ADDR'];
if ($config['tracking']['ip_anonymisieren']) {
    $ipParts = explode('.', $ip);
    $ip = $ipParts[0] . '.' . $ipParts[1] . '.xxx.xxx';
}

// Altersgruppe via User-Agent-Erkennung
$alter = 'unbekannt';
if ($config['tracking']['alterserkennung']) {
    $agent = $_SERVER['HTTP_USER_AGENT'];
    
    if (strpos($agent, 'TikTok') !== false) {
        $alter = 'jung (TikTok)';
    } elseif (strpos($agent, 'Instagram') !== false) {
        $alter = 'mittel (Instagram)';
    } elseif (strpos($agent, 'YouTube') !== false) {
        $alter = 'gemischt (YouTube)';
    } elseif (strpos($agent, 'Facebook') !== false) {
        $alter = 'älter (Facebook)';
    } elseif (strpos($agent, 'WhatsApp') !== false) {
        $alter = 'alle (WhatsApp)';
    } elseif (strpos($agent, 'Mobile') !== false) {
        $alter = 'mobil';
    } else {
        $alter = 'desktop';
    }
}

// Tracking-Log schreiben
$logEintrag = date('Y-m-d H:i:s') . " | $ip | $ref | " 
    . "$agent | $alter | $zielSchluessel\n";
file_put_contents($logfile, $logEintrag, FILE_APPEND);

💻 Code — Admin-Panel CSRF & Session-Security

Sicherheit: CSRF-Token + Session-Management

// CSRF-Token generieren & validieren
function generateCSRFToken() {
    if (empty($_SESSION['csrf_token'])) {
        $_SESSION['csrf_token'] = bin2hex(random_bytes(32));
    }
    return $_SESSION['csrf_token'];
}

function verifyCSRFToken($token) {
    return hash_equals($_SESSION['csrf_token'] ?? '', $token);
}

// Session sicher zerstören
session_start();
$_SESSION = array();
if (ini_get('session.use_cookies')) {
    $params = session_get_cookie_params();
    setcookie(session_name(), '', time() - 42000,
        $params['path'], $params['domain'],
        $params['secure'], $params['httponly']
    );
}
session_destroy();

// Config via JSON (keine Datenbank nötig)
$config = json_decode(
    file_get_contents(__DIR__ . '/config.json'), true
);
$config['last_modified'] = date('Y-m-d H:i:s');
file_put_contents($config_file, 
    json_encode($config, JSON_PRETTY_PRINT));

🎯 Strategische Erkenntnisse

🖨️

QR-Code ≠ statisch

Der größte Irrtum im Print-Marketing: QR-Codes sind für immer fest. Mit einem Redirector ändern Sie das Ziel in Echtzeit — 10.000 Flyer bleiben aktuell, ohne Neudruck.

Eine Redirect-URL spart tausende Euro Druckkosten pro Kampagne.

📊

Tracking ohne Cookies

IP + User-Agent + Timestamp reichen für valide Kampagnen-Analyse. Kein Consent-Banner nötig, 100% DSGVO-konform.

Cookie-loses Tracking = weniger Rechtsrisiko, gleiche Insights.

🎯

Zeitsteuerung = Relevanz

Morgens YouTube (lange Videos), abends TikTok (schneller Content). Die Plattform-Nutzung folgt Tagesrhythmen — Ihre Weiterleitung auch.

Kontext-Steuerung verdoppelt Engagement-Raten.

Dynamische QR-Codes für Ihre Kampagne

QR-Code-System mit Admin-Panel, Tracking und Zeitsteuerung — auf Ihrem Server, ohne SaaS-Abo. In 3 Tagen live.

📞 Jetzt anrufen ✉️ E-Mail senden