Heim > Backend-Entwicklung > PHP-Tutorial > PHP Master | EINFAHREN URLS generieren

PHP Master | EINFAHREN URLS generieren

Joseph Gordon-Levitt
Freigeben: 2025-02-24 10:30:11
Original
251 Leute haben es durchsucht

PHP Master | Generating One-Time Use URLs

einmalige URLs: Sicher, einzelne Webadressen

Eine einmalige URL (OTU) ist eine temporäre Webadresse für eine einzelne Verwendung. Dies ist ideal für den sicheren Zugriff auf Dateien oder Ressourcen, die häufig in Szenarien wie Kontoüberprüfung oder zeitlich begrenzter Zugriff verwendet werden. Dieser Artikel beschreibt die Erzeugung, Implementierung und Ablauf von OTU unter Verwendung von Php.

Schlüsselkonzepte:

  • Secure Token Generation: Nutzen Sie die Funktionen von PHP sha1() und uniqid(), um unvorhersehbare, einzigartige Token für jedes OTU zu erstellen, wodurch das Risiko von Kollisionen minimiert wird.
  • Datenbankverfolgung: Speichern Sie das Token, den Benutzernamen und den Zeitstempel in einer Datenbank, um die Verwendung und Gültigkeit der OTU zu verwalten.
  • Token -Überprüfung und -Anviga: Ein Verarbeitungsskript überprüft das Token gegen die Datenbank, führt die beabsichtigte Aktion (z. B. Kontoaktivierung) aus und macht das Token sofort ungültig, um die Wiederverwendung zu verhindern.
  • Zeit-zu-Live (TTL): Implementieren Sie eine TTL (z. B. 24 Stunden), um OTUs automatisch abzulaufen, wodurch die Sicherheit verbessert wird.

Erstellen einer einmaligen URL:

Stellen Sie sich ein Benutzerregistrierungssystem vor. Nach der Anmeldung wird eine Bestätigungs -E -Mail mit einer OTU gesendet, um das Konto zu aktivieren. Das OTU -Format wäre: http://example.com/activate?token=ee97780...

Datenbanktabelle:

Die OTU -Informationen werden in einer Datenbanktabelle gespeichert:

CREATE TABLE pending_users (
    token CHAR(40) NOT NULL,
    username VARCHAR(45) NOT NULL,
    tstamp INTEGER UNSIGNED NOT NULL,
    PRIMARY KEY(token)
);
Nach dem Login kopieren

Token -Generation (PHP):

<?php
$token = sha1(uniqid($username, true));
?>
Nach dem Login kopieren

uniqid() erzeugt eine eindeutige Kennung, und sha1() hasht es in eine 40-Charakter-Zeichenfolge für das Token.

Datenbankeinfügung (PHP):

<?php
$query = $db->prepare("INSERT INTO pending_users (username, token, tstamp) VALUES (?, ?, ?)");
$query->execute(array($username, $token, $_SERVER["REQUEST_TIME"]));
?>
Nach dem Login kopieren

Der Token, der Benutzername und der Zeitstempel werden zur späteren Überprüfung gespeichert.

URL -Konstruktion (PHP):

<?php
$url = "http://example.com/activate.php?token=$token";
?>
Nach dem Login kopieren

Dies schafft die otu.

E -Mail -Benachrichtigung (PHP):

<?php
$message = "Thank you for signing up! Activate your account: $url";
mail($address, "Account Activation", $message);
?>
Nach dem Login kopieren

Die OTU wird per E -Mail an den Benutzer gesendet.

Verarbeitung der einmaligen URL (Activate.php):

Dieses Skript überprüft und verarbeitet die OTU:

<?php
// Retrieve token
$token = isset($_GET["token"]) && preg_match('/^[0-9A-F]{40}$/i', $_GET["token"]) ? $_GET["token"] : throw new Exception("Invalid token.");

// Verify token
$query = $db->prepare("SELECT username, tstamp FROM pending_users WHERE token = ?");
$query->execute(array($token));
$row = $query->fetch(PDO::FETCH_ASSOC);
$query->closeCursor();

if (!$row) { throw new Exception("Invalid token."); }
extract($row);

// Account activation logic...

// Delete token
$query = $db->prepare("DELETE FROM pending_users WHERE username = ? AND token = ? AND tstamp = ?");
$query->execute(array($username, $token, $tstamp));
?>
Nach dem Login kopieren

Dieses Skript ruft das Token ab, überprüft es mit der Datenbank, führt die Kontoaktivierung durch und löscht dann das Token, um die Wiederverwendung zu verhindern.

Hinzufügen eines TTL:

<?php
$delta = 86400; // 24 hours in seconds
if ($_SERVER["REQUEST_TIME"] - $tstamp > $delta) { throw new Exception("Token expired."); }
// ...rest of the code...
?>
Nach dem Login kopieren

Dies fügt eine 24-Stunden-Ablaufprüfung hinzu.

Schlussfolgerung:

Einmalige URLs bieten einen robusten Mechanismus für einen sicheren Zugang zu einem Gebrauch. Dieser Ansatz in Kombination mit den richtigen Datenbankverwaltungs- und Sicherheitspraktiken sorgt für ein sicheres und zuverlässiges System. Denken Sie daran, Fehlerbehandlungen und Eingabeeinheiten für eine produktionsbereite Lösung zu implementieren. Erwägen Sie, ein Reinigungsskript hinzuzufügen, um abgelaufene Token aus der Datenbank regelmäßig zu entfernen.

Das obige ist der detaillierte Inhalt vonPHP Master | EINFAHREN URLS generieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage