PHPackages                             tualo/otk - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. tualo/otk

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

tualo/otk
=========

tualo - one time key generator

1.0.6(5mo ago)04MITPHP

Since Jan 10Pushed 5mo agoCompare

[ Source](https://github.com/tualo/otk)[ Packagist](https://packagist.org/packages/tualo/otk)[ RSS](/packages/tualo-otk/feed)WikiDiscussions main Synced today

READMEChangelogDependencies (2)Versions (6)Used By (0)

OTK - One-Time Key
==================

[](#otk---one-time-key)

Ein PHP-Paket für cookieloses Session-Handling mittels einmaliger Schlüssel (One-Time Keys).

Beschreibung
------------

[](#beschreibung)

OTK (One-Time Key) ermöglicht ein sicheres, cookieloses Session-Management durch die Verwendung von einmaligen, zeitlich begrenzten Schlüsseln. Diese werden als URL-Parameter übergeben und können nur einmal verwendet werden. Die Keys werden in Redis gespeichert und nach einmaliger Verwendung automatisch gelöscht.

Hauptmerkmale
-------------

[](#hauptmerkmale)

- **Cookieloses Session-Handling**: Ideal für Umgebungen, in denen Cookies nicht verwendet werden können oder sollen
- **Einmalige Verwendung**: Jeder Key kann nur einmal eingelöst werden
- **Zeitliche Begrenzung**: Keys verfallen automatisch nach einer konfigurierbaren Zeitspanne
- **Redis-basiert**: Schnelle und zuverlässige Speicherung
- **Konfigurierbar**: Anpassbare Key-Länge, Lebensdauer und Redis-Verbindung

Anforderungen
-------------

[](#anforderungen)

- PHP &gt;= 7.4
- Redis-Server
- PHP Redis Extension
- tualo/ds ^1.5
- tualo/server ^1

Installation
------------

[](#installation)

```
composer require tualo/otk
```

Konfiguration
-------------

[](#konfiguration)

Die Konfiguration erfolgt über die Tualo Application Configuration:

```
// Redis-Verbindung
'otk' => [
    'redis_host' => '127.0.0.1',     // Redis Server Host
    'redis_port' => 6379,             // Redis Server Port
    'redis_db' => 1,                  // Redis Datenbank-Nummer

    // Key-Einstellungen
    'key_prefix' => 'otk',            // Präfix für Keys
    'key_length' => 36,               // Länge des Keys (in Zeichen)
    'key_lifetime' => 1442,           // Lebensdauer in Sekunden (~24 Min)

    // Session-Handling
    'use_for_session' => '1',         // '1' = OTK für Sessions verwenden
]
```

Verwendung
----------

[](#verwendung)

### Grundlegende Verwendung

[](#grundlegende-verwendung)

```
use Tualo\Office\OTK\OTK;

// OTK-Instanz abrufen
$otk = OTK::getInstance();

// Neuen Key generieren und Session-ID speichern
$key = $otk->setValue(); // Verwendet aktuelle Session-ID
// oder
$key = $otk->setValue('custom-session-id');

// Key in URL einbinden
$url = "https://example.com/page?" . $key;

// Bei nächster Anfrage: Session-ID aus Key auslesen
$sessionId = $otk->getValue();
if ($sessionId !== false) {
    session_id($sessionId);
    session_start();
}
```

### CMS-Verwendung in Pug-Templates

[](#cms-verwendung-in-pug-templates)

Wenn die CMS-Middleware eingebunden ist, kann das OTK-Objekt direkt in Pug-Templates verwendet werden:

```
//- OTK-Key für aktuellen Benutzer/Session generieren
- var otkKey = cms.otk().setValue()

//- Link mit OTK generieren
a(href=`/secure-page?${otkKey}`) Sicherer Link

//- Oder mit JavaScript
script.
  var key = '#{cms.otk.setValue()}';
  var url = `/api/endpoint?${key}`;
  fetch(url).then(res => res.json());

//- Beispiel: Download-Link mit zeitlich begrenztem Zugriff
button(onclick=`window.location='/download/file.pdf?${cms.otk.setValue()}'`)
  | Datei herunterladen
```

**PHP-Seite** (CMS-Middleware aktivieren):

```
use Tualo\Office\OTK\CMSMiddleware\OTKCMSMiddleware;

// Middleware registrieren
OTKCMSMiddleware::register();
```

Nach der Registrierung steht `cms.otk` in allen Pug-Templates zur Verfügung und bietet dieselben Methoden wie die OTK-Klasse.

### Automatisches Session-Handling

[](#automatisches-session-handling)

Das Middleware-System ermöglicht automatisches Session-Handling:

```
use Tualo\Office\OTK\Middleware\OTKSession;

// Middleware registrieren
OTKSession::register();
```

Die Middleware:

1. Prüft ob `use_for_session` aktiviert ist
2. Sucht nach OTK-Keys in der Anfrage
3. Extrahiert die Session-ID aus dem Key
4. Startet die Session automatisch
5. Löscht den verwendeten Key

### Key-Format

[](#key-format)

Keys werden automatisch nach folgendem Schema generiert:

```
{prefix}_{random_hex_string}

```

Beispiel:

```
otk_a7b3c9d1e5f2a4b6c8d0e1f3a5b7c9d1e3f5

```

### Manuelle Key-Verwaltung

[](#manuelle-key-verwaltung)

```
$otk = OTK::getInstance();

// Key generieren
$key = $otk->setValue('my-session-id');
echo "Ihr Key: " . $key;

// Key auflösen (nur einmal möglich!)
$sessionId = $otk->getValue();
if ($sessionId !== false) {
    echo "Session-ID: " . $sessionId;
} else {
    echo "Key ungültig oder bereits verwendet";
}
```

Anwendungsfälle
---------------

[](#anwendungsfälle)

### 1. E-Mail-Links

[](#1-e-mail-links)

```
// Link für E-Mail generieren
$otk = OTK::getInstance();
$key = $otk->setValue($userId);
$link = "https://example.com/login?" . $key;

// E-Mail versenden mit $link
```

### 2. API-Tokens

[](#2-api-tokens)

```
// Temporären Zugangstoken erstellen
$otk = OTK::getInstance();
$token = $otk->setValue($apiSessionData);

// Token an Client zurückgeben
return ['access_token' => $token];
```

### 3. Cookie-freie Mobile Apps

[](#3-cookie-freie-mobile-apps)

```
// Bei Login: Key generieren
$key = $otk->setValue($sessionId);

// Key an App zurückgeben
return ['otk' => $key];

// App sendet Key bei nächster Anfrage als URL-Parameter
// Middleware löst automatisch Session auf
```

Sicherheitshinweise
-------------------

[](#sicherheitshinweise)

- **Einmalige Verwendung**: Keys werden nach Verwendung automatisch gelöscht
- **Zeitliche Begrenzung**: Keys verfallen nach der konfigurierten Lebensdauer
- **HTTPS verwenden**: Keys in URLs sollten nur über verschlüsselte Verbindungen übertragen werden
- **Key-Länge**: Standard 36 Zeichen bieten ausreichende Entropie gegen Brute-Force
- **Logging**: Keys sollten nicht in Logs gespeichert werden

Fehlerbehandlung
----------------

[](#fehlerbehandlung)

```
try {
    $otk = OTK::getInstance();
    $sessionId = $otk->getValue();

    if ($sessionId === false) {
        // Key nicht gefunden oder bereits verwendet
        throw new Exception('Ungültiger oder abgelaufener Key');
    }

    session_id($sessionId);
    session_start();

} catch (Exception $e) {
    // Redis-Verbindungsfehler oder andere Probleme
    error_log($e->getMessage());
}
```

Lizenz
------

[](#lizenz)

MIT

Autor
-----

[](#autor)

Thomas Hoffmann

Support
-------

[](#support)

Bei Fragen oder Problemen erstellen Sie bitte ein Issue im Repository.

###  Health Score

30

—

LowBetter than 62% of packages

Maintenance70

Regular maintenance activity

Popularity3

Limited adoption so far

Community2

Small or concentrated contributor base

Maturity39

Early-stage or recently created project

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

5

Last Release

173d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/1368301?v=4)[tualo solutions GmbH](/maintainers/tualo)[@tualo](https://github.com/tualo)

### Embed Badge

![Health badge](/badges/tualo-otk/health.svg)

```
[![Health](https://phpackages.com/badges/tualo-otk/health.svg)](https://phpackages.com/packages/tualo-otk)
```

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
