Rumah > pembangunan bahagian belakang > tutorial php > PHP Master | Menjana URL Penggunaan Satu Masa

PHP Master | Menjana URL Penggunaan Satu Masa

Joseph Gordon-Levitt
Lepaskan: 2025-02-24 10:30:11
asal
243 orang telah melayarinya

PHP Master | Generating One-Time Use URLs

URL satu masa: Alamat web selamat, penggunaan tunggal

URL satu kali (OTU) adalah alamat web sementara yang direka untuk kegunaan tunggal. Ini sesuai untuk akses selamat ke fail atau sumber, sering digunakan dalam senario seperti pengesahan akaun atau akses terhad masa. Artikel ini memperincikan generasi, pelaksanaan, dan tamat tempoh OTU menggunakan php.

Konsep Utama:

  • Generasi Token Secure: Leverage PHP's dan sha1() berfungsi untuk mewujudkan token yang tidak dapat diramalkan, unik untuk setiap OTU, meminimumkan risiko perlanggaran. uniqid()
  • Penjejakan pangkalan data: Simpan token, nama pengguna, dan timestamp dalam pangkalan data untuk menguruskan penggunaan dan kesahihan OTU.
  • Pengesahan dan Pembatalan Token: Skrip pemprosesan mengesahkan token terhadap pangkalan data, melakukan tindakan yang dimaksudkan (mis., Pengaktifan akaun), dan segera membatalkan token untuk mencegah penggunaan semula.
  • Time-to-Live (TTL):
  • Melaksanakan TTL (mis., 24 jam) secara automatik tamat OTU, meningkatkan keselamatan.
Mewujudkan URL satu kali:

Bayangkan sistem pendaftaran pengguna. Selepas mendaftar, e -mel pengesahan yang mengandungi OTU dihantar untuk mengaktifkan akaun. Format OTU akan menjadi:

http://example.com/activate?token=ee97780...

Jadual Pangkalan Data:

Maklumat OTU disimpan dalam jadual pangkalan data:

CREATE TABLE pending_users (
    token CHAR(40) NOT NULL,
    username VARCHAR(45) NOT NULL,
    tstamp INTEGER UNSIGNED NOT NULL,
    PRIMARY KEY(token)
);
Salin selepas log masuk
Generasi Token (PHP):

<?php
$token = sha1(uniqid($username, true));
?>
Salin selepas log masuk
menghasilkan pengenal yang unik, dan

hashes ke dalam rentetan 40 aksara untuk token. uniqid() sha1()

Penyisipan pangkalan data (PHP):

Token, Nama Pengguna, dan Timestamp disimpan untuk pengesahan kemudian.
<?php
$query = $db->prepare("INSERT INTO pending_users (username, token, tstamp) VALUES (?, ?, ?)");
$query->execute(array($username, $token, $_SERVER["REQUEST_TIME"]));
?>
Salin selepas log masuk

url construction (php):

ini mencipta OTU.
<?php
$url = "http://example.com/activate.php?token=$token";
?>
Salin selepas log masuk

Pemberitahuan e -mel (php):

OTU dihantar kepada pengguna melalui e -mel.
<?php
$message = "Thank you for signing up! Activate your account: $url";
mail($address, "Account Activation", $message);
?>
Salin selepas log masuk

memproses url satu kali (activate.php):

skrip ini mengesahkan dan memproses OTU:

Skrip ini mengambil token, mengesahkannya terhadap pangkalan data, melakukan pengaktifan akaun, dan kemudian memadamkan token untuk mengelakkan penggunaan semula.
<?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));
?>
Salin selepas log masuk

Menambah TTL:

Ini menambah pemeriksaan tamat tempoh 24 jam.

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

Kesimpulan:

URL satu kali menyediakan mekanisme yang mantap untuk akses yang selamat dan guna. Pendekatan ini, digabungkan dengan pengurusan pangkalan data dan amalan keselamatan yang betul, memastikan sistem yang selamat dan boleh dipercayai. Ingatlah untuk melaksanakan pengendalian ralat dan sanitisasi input untuk penyelesaian siap pengeluaran. Pertimbangkan untuk menambah skrip pembersihan untuk menghapuskan token yang telah tamat tempoh dari pangkalan data.

Atas ialah kandungan terperinci PHP Master | Menjana URL Penggunaan Satu Masa. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan