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
Barbara Streisandasal
2024-12-30 22:20:11808semak imbas

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);

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 
    }
}

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 
    }
}

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!

Kenyataan:
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