Heim >Backend-Entwicklung >PHP-Tutorial >PHP Master | EINFAHREN URLS generieren
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:
sha1()
und uniqid()
, um unvorhersehbare, einzigartige Token für jedes OTU zu erstellen, wodurch das Risiko von Kollisionen minimiert 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:
<code class="language-sql">CREATE TABLE pending_users ( token CHAR(40) NOT NULL, username VARCHAR(45) NOT NULL, tstamp INTEGER UNSIGNED NOT NULL, PRIMARY KEY(token) );</code>
Token -Generation (PHP):
<code class="language-php"><?php $token = sha1(uniqid($username, true)); ?></code>
uniqid()
erzeugt eine eindeutige Kennung, und sha1()
hasht es in eine 40-Charakter-Zeichenfolge für das Token.
Datenbankeinfügung (PHP):
<code class="language-php"><?php $query = $db->prepare("INSERT INTO pending_users (username, token, tstamp) VALUES (?, ?, ?)"); $query->execute(array($username, $token, $_SERVER["REQUEST_TIME"])); ?></code>
Der Token, der Benutzername und der Zeitstempel werden zur späteren Überprüfung gespeichert.
URL -Konstruktion (PHP):
<code class="language-php"><?php $url = "http://example.com/activate.php?token=$token"; ?></code>
Dies schafft die otu.
E -Mail -Benachrichtigung (PHP):
<code class="language-php"><?php $message = "Thank you for signing up! Activate your account: $url"; mail($address, "Account Activation", $message); ?></code>
Die OTU wird per E -Mail an den Benutzer gesendet.
Verarbeitung der einmaligen URL (Activate.php):
Dieses Skript überprüft und verarbeitet die OTU:
<code class="language-php"><?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)); ?></code>
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:
<code class="language-php"><?php $delta = 86400; // 24 hours in seconds if ($_SERVER["REQUEST_TIME"] - $tstamp > $delta) { throw new Exception("Token expired."); } // ...rest of the code... ?></code>
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!