Rumah > pembangunan bahagian belakang > tutorial php > Bagaimana Saya Boleh Menghalang Nama Pengguna Pendua Semasa Pendaftaran?

Bagaimana Saya Boleh Menghalang Nama Pengguna Pendua Semasa Pendaftaran?

Barbara Streisand
Lepaskan: 2024-12-30 22:20:11
asal
802 orang telah melayarinya

How Can I Prevent Duplicate Usernames During Registration?

Memastikan Nama Pengguna Unik Semasa Pendaftaran

Mencegah nama pengguna pendua semasa pendaftaran adalah penting untuk mengekalkan integriti data. Begini cara untuk melaksanakan fungsi ini dengan cekap:

Menambah Indeks Unik

Pendekatan pilihan ialah menambah indeks UNIK pada lajur nama pengguna dalam pangkalan data. Ini akan melarang pemasukan nama pengguna pendua.

-- Make it unique
ALTER TABLE users ADD UNIQUE (username);
Salin selepas log masuk

Penguatkuasaan Kekangan Pangkalan Data

Indeks unik dalam pangkalan data akan mencetuskan ralat apabila cuba memasukkan nama pengguna pendua.

Mengendalikan Ralat dalam PHP

Untuk mengesan ralat dalam PHP, anda boleh menyemak kod ralat SQLSTATE. Untuk kekangan pendua, kod ralat ialah 1062.

Contoh PDO

$error = [];
$username = 'Dharman';

$pdo = new \PDO('mysql:host=localhost;dbname=test;charset=utf8mb4', 'user', 'password', [
    \PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION,  // make sure the error reporting is enabled!
    \PDO::ATTR_EMULATE_PREPARES => false
]);

try {
    $stmt = $pdo->prepare('INSERT INTO users(username) VALUE(?)');
    $stmt->execute([$username]);
} catch (\PDOException $e) {
    if ($e->errorInfo[1] === 1062) {
        $error[] = "This username is already taken!";
    } else {
        throw $e; // let the exception to be processed further 
    }
}
Salin selepas log masuk

Contoh mysqli

$error = [];
$username = 'Dharman';

// make sure the error reporting is enabled!
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = new mysqli('localhost', 'user', 'password', 'test');
$mysqli->set_charset('utf8mb4');

try {
    $stmt = $mysqli->prepare('INSERT INTO users(username) VALUE(?)');
    $stmt->bind_param('s', $username);
    $stmt->execute();
} catch (\mysqli_sql_exception $e) {
    if ($e->getCode() === 1062) {
        $error[] = "This username is already taken!";
    } else {
        throw $e; // let the exception to be processed further 
    }
}
Salin selepas log masuk

Dengan menggunakan indeks unik dan mengendalikan ralat dalam kod aplikasi, anda boleh mencegah pendua dengan berkesan nama pengguna semasa pendaftaran, memastikan integriti pangkalan data pengguna anda.

Atas ialah kandungan terperinci Bagaimana Saya Boleh Menghalang Nama Pengguna Pendua Semasa Pendaftaran?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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