Hàm uniqid() trong PHP
Trần Thị Vân
- 1224
- 06/08/2025
Chức năng của Hàm uniqid() trong PHP
Hàm uniqid() trong PHP dựa vào thời gian hiện tại (tính bằng micro giây) để tạo ra một chuỗi ngẫu nhiên gồm số và chữ định danh duy nhất, ngoài ra còn có thể dùng thêm một số entropy để tăng tính duy nhất.
Cú pháp của Hàm uniqid() trong PHP
uniqid();
Tạo ra một chuỗi ngẫu nhiên gồm số và chữ định danh duy nhất.
uniqid('ký_tự_nối');
ký_tự_nối: Ký tự nối thêm với chuỗi ngẫu nhiên gồm số và chữ định danh duy nhất.
uniqid('ký_tự_nối', true);
true: Thêm một số entropy.
ký_tự_nối: Ký tự nối thêm với chuỗi ngẫu nhiên gồm số và chữ định danh duy nhất và nối thêm với một số entropy.
Code Hàm uniqid() trong PHP
<h2>Hàm uniqid(); mặc định</h2>
<?php
echo uniqid()."<br>"; // Kết quả ngẫu nhiên: 690a0521989c9
?>
<h2>Hàm uniqid(); nối chữ</h2>
<?php
echo uniqid('tmp_')."<br>"; // Kết quả ngẫu nhiên: tmp_690a052198a19
?>
<h2>Hàm uniqid(); thêm một số entropy</h2>
<?php
echo uniqid('tmp_',true)."<br>"; // Kết quả ngẫu nhiên: tmp_690a052198a1d1.75165339
?>
Kết quả ngẫu nhiên:
/////Hàm uniqid(); mặc định
690a0521989c9
/////Hàm uniqid(); nối chữ
tmp_690a052198a19
/////Hàm uniqid(); thêm một số entropy
tmp_690a052198a1d1.75165339
Ứng dụng của uniqid() trong PHP
uniqid() phù hợp khi cần tạo nhanh một chuỗi định danh có khả năng khác nhau giữa các lần thực thi, chẳng hạn đặt tên file tạm, tạo mã tham chiếu ngắn hoặc phân biệt dữ liệu trong một quy trình xử lý. Hàm này tiện lợi vì không cần tự xây dựng chuỗi từ ngày giờ hay các thành phần khác.
Tuy nhiên, cách sử dụng cần dựa trên mục đích thực tế. Nếu giá trị được dùng cho xác thực, mật khẩu, token đăng nhập hoặc thông tin cần tính bảo mật cao, nên chọn cơ chế tạo giá trị ngẫu nhiên chuyên dụng thay vì dựa vào uniqid().
Tạo tên file và mã định danh tạm thời
Một ứng dụng phổ biến là tạo tên khác nhau cho file khi hệ thống tiếp nhận nhiều dữ liệu cùng lúc. Chẳng hạn, trước khi lưu một file tải lên máy chủ, có thể tạo một chuỗi bằng uniqid() rồi ghép với phần mở rộng phù hợp. Cách này giúp hạn chế tình trạng các file mới ghi đè lên file đã tồn tại.
<?php
$tenFile = uniqid() . '.jpg';
echo $tenFile;
?>
Hàm cũng có thể được dùng để tạo mã tham chiếu tạm cho một bản ghi hoặc một thao tác xử lý. Khi cần thêm tiền tố để dễ nhận biết mục đích của giá trị, có thể truyền chuỗi vào tham số đầu tiên.
<?php
$maTam = uniqid('donhang_');
echo $maTam;
?>
Cách này phù hợp với các giá trị dùng nội bộ trong thời gian ngắn. Nếu mã được đưa cho người dùng, lưu lâu dài hoặc sử dụng làm khóa quan trọng trong hệ thống, nên cân nhắc cơ chế tạo định danh phù hợp hơn.
uniqid() có đảm bảo chuỗi duy nhất tuyệt đối không?
Không. Tên hàm dễ khiến người mới hiểu rằng giá trị tạo ra luôn duy nhất, nhưng uniqid() không đưa ra cam kết tuyệt đối rằng mọi chuỗi sinh ra trong mọi môi trường đều không trùng nhau. Giá trị của hàm chủ yếu dựa trên thời gian hiện tại, vì vậy không nên xem nó là một bộ sinh mã duy nhất tuyệt đối.
Tham số more_entropy có thể giúp bổ sung thêm độ biến thiên cho chuỗi được tạo ra, nhưng điều này không biến uniqid() thành công cụ tạo mã bảo mật hoặc cơ chế đảm bảo không trùng tuyệt đối.
<?php
$ma = uniqid('tmp_', true);
echo $ma;
?>
Đối với dữ liệu yêu cầu độ an toàn cao, nên sử dụng giải pháp được thiết kế cho mục đích đó, chẳng hạn random_bytes() hoặc random_int() tùy trường hợp. Còn với các tác vụ thông thường như đặt tên tạm hoặc tạo giá trị phân biệt trong một quy trình, uniqid() vẫn là lựa chọn đơn giản và dễ sử dụng.
Lời kết
Cảm ơn các bạn đã tham khảo bài viết Hàm uniqid() trong PHP.
- 0 Bình luận
Email, Điện thoại của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *