Kiểm tra mật khẩu khi đăng ký thành viên hoặc tạo mới User

Trong khi xây dựng phần mềm hoặc website. Chắc chắn bạn sẽ phải viết phần quản trị User, Có khi bạn cần yêu cầu mật khẩu truy cập cần có độ dài nhất định(6) và mật khẩu yêu cầu cả ký tự và số? Có nhiều cách để thực hiện, mình xin giới thiệu 1 cách

Cách của mình chủ yếu dùng SQL để kiểm tra.

Trước hết bạn cần viết 1 hàm kiểm tra chuỗi ký tự có yêu cầu cả ký tự và chữ số, giá trị trả về là kiểu INT. Bạn viết hàm trong SQL như sau:

CREATE FUNCTION dbo.ufnKiemTraKyTuVaSo
( 
    @ChuoiKiemTra VARCHAR(1000) 
)
RETURNS INT

BEGIN
DECLARE @ketqua int
    IF PATINDEX('%[0-9]%',@ChuoiKiemTra ) > 0 
        AND PATINDEX ( '%[a-z]%',@ChuoiKiemTra )> 0  
        SET @ketqua = PATINDEX('%[0-9]%',@ChuoiKiemTra)
    ELSE SET @ketqua =0
RETURN @ketqua 
END

-- Trong hàm trên mình sẽ kiểm tra trong @ChuoiKiemTra 
-- nếu trong chuỗi này có cả chữ số và ký tự thì trả về 
-- vị trí đầu tiên của chữ số trong chuỗi

Sau khi bạn viết xong hàm này bạn kiểm tra bằng cách:

SELECT dbo.ufnKiemTraKyTuVaSo ('abczyx')   
-- Kết quả =0 vì không có chữ số
SELECT dbo.ufnKiemTraKyTuVaSo ('abc12zy3x') 
-- Kết quả =4 vị chí chữ số đầu tiên (1) trong chuỗi
SELECT dbo.ufnKiemTraKyTuVaSo ('0987654')   
-- Kết quả =0 vì không có ký tự

Tiếp theo bạn viết hàm kiểm tra mật khẩu , giá trị trả về là kiểu INT.
Bạn viết hàm trong SQL như sau như sau:

CREATE FUNCTION dbo.ufnKiemTraMatKhau
( 
    @MatKhau VARCHAR(1000) 
)
RETURNS INT

BEGIN
    DECLARE @result int
    -- Nếu mật khẩu ngắn hơn 6 thì kết quả =0
    IF len(@MatKhau )<6 
        SET @result=0
    ELSE
    -- Ngược lại Kết quả = dbo.ufnKiemTraKyTuVaSo(@MatKhau)
        SET @result = dbo.ufnKiemTraKyTuVaSo(@MatKhau)
RETURN @result
END

Bạn có thể kiểm tra bằng cách:

SELECT dbo.ufnKiemTraMatKhau ('abc34')  
-- Kết quả =0 chiều dài không đủ 6 
...

Để sử dụng hàm này trong code asp.net cũng đơn giản bằng cách gọi hàm trong SQL. Nếu giá trị lớn hơn 0 thì OK, Nếu bằng 0 thì đưa ra thông báo.
Có thời gian mình sẽ viết tiếp bằng asp.net và sẽ để trong mục Lập trình :: Asp.net

Chúc các bạn thành công!