Điều tương tự cũng được áp dụng cho việc tạo số ngẫu nhiên và chuỗi ký tự chữ và số. Điều tốt nhất chúng ta có thể hy vọng là tạo ra các số và chuỗi dường như không theo một khuôn mẫu nào và kẻ tấn công không thể dự đoán được trên thực tế
Trong hướng dẫn này, chúng tôi sẽ đề cập đến các kỹ thuật khác nhau để tạo số ngẫu nhiên và chuỗi ký tự chữ và số trong PHP. Một số trong số chúng sẽ được bảo mật bằng mật mã, trong khi một số khác chỉ dành cho mục đích sử dụng thông thường, chẳng hạn như gán tên tệp giả ngẫu nhiên hoặc tạo URL và đề xuất tên người dùng
Học PHP với một khóa học trực tuyến miễn phí
Nếu bạn muốn học PHP, hãy xem khóa học trực tuyến miễn phí của chúng tôi về các nguyên tắc cơ bản của PHP
Trong khóa học này, bạn sẽ học các nguyên tắc cơ bản của lập trình PHP. Bạn sẽ bắt đầu với những kiến thức cơ bản, học cách PHP hoạt động và viết các hàm và vòng lặp PHP đơn giản. Sau đó, bạn sẽ xây dựng các lớp mã hóa để lập trình hướng đối tượng đơn giản [OOP]. Đồng thời, bạn sẽ học tất cả các kỹ năng quan trọng nhất để viết ứng dụng cho web. bạn sẽ có cơ hội thực hành phản hồi các yêu cầu GET và POST, phân tích cú pháp JSON, xác thực người dùng và sử dụng cơ sở dữ liệu MySQL
Nguyên tắc cơ bản PHP
Jeremy McPeak
29 Thg 10 2021
Tạo số ngẫu nhiên trong PHP
Có ba hàm khác nhau để tạo số ngẫu nhiên trong PHP. Tất cả chúng sẽ chấp nhận giá trị tối thiểu và tối đa có thể cho các số ngẫu nhiên và xuất ra một số ngẫu nhiên cho bạn. Đây là
153,
154 và
155
Với
156, giá trị tối thiểu và tối đa của số nguyên mà bạn có thể tạo nằm trong khoảng từ
157 và giá trị được trả về bởi
158. Trước PHP 7. 1. 0, chức năng này chậm hơn khoảng bốn lần so với
159. Tuy nhiên, bắt đầu từ PHP 7. 1. 0, nó đã được đặt bí danh là
159. Tuy nhiên, không giống như
159, bạn có thể đặt giá trị của
162 thấp hơn
163 mà không gây ra lỗi
Với
159, giá trị tối thiểu và tối đa của số nguyên mà bạn có thể tạo nằm trong khoảng từ
157 và giá trị được trả về bởi
166. Nó dựa vào việc triển khai Mersenne Twister để tạo số ngẫu nhiên. Tuy nhiên, hãy coi chừng—trước PHP 7. 1. 0, chức năng này đã triển khai một phiên bản thuật toán không chính xác để tạo các số. Tuy nhiên, nó đã được sửa trong các phiên bản mới hơn
Chức năng thậm chí còn tốt hơn trong PHP 7. 2. 0 bằng cách loại bỏ lỗi thiên vị modulo. Điều này có nghĩa là đối với một số hạt giống cụ thể, chuỗi số ngẫu nhiên của bạn giờ đây sẽ tốt hơn một chút so với các phiên bản cũ hơn. Tuy nhiên, một số mã chuyên biệt thực sự có thể dựa vào sự thiên vị này. Nếu vậy, bạn có thể sử dụng thuật toán khởi tạo cũ hơn bằng cách gọi hàm
167 để khởi tạo trình tạo số ngẫu nhiên và chuyển
168 làm giá trị của tham số thứ hai
Hàm
159 có chu kỳ là 219937−1, về cơ bản có nghĩa là trong trường hợp tốt nhất, bạn nhận được tối đa 219937−1 số ngẫu nhiên trước khi chuỗi bắt đầu lặp lại. Bạn nên lưu ý rằng sự lặp lại của một dãy không giống như sự lặp lại của một số cụ thể. Nói cách khác, bạn có thể nhận được cùng một số ngẫu nhiên hai lần, nhưng điều đó không có nghĩa là chính chuỗi đó đã bắt đầu lặp lại. Trình tự sau đây là một ví dụ
1
187 3276 1267 15 1267 34598 3467 125 17
Trong chuỗi trên, chúng tôi có 1267 hai lần ở đầu ra, nhưng điều đó không có nghĩa là toàn bộ chuỗi bắt đầu lặp lại sau đó. Không có khả năng lặp lại cùng một số sớm như vậy trong một chuỗi ngẫu nhiên, nhưng có thể
Số nguyên ngẫu nhiên an toàn bằng mật mã
Nếu bạn muốn các số giả ngẫu nhiên được bảo mật bằng mật mã, thì hàm
170 trong PHP là lựa chọn tốt nhất dành cho bạn. Nó sẽ tạo ra các số ngẫu nhiên giữa các giá trị
163 và
162 được cung cấp, giá trị mặc định là
173 và
174. Thật không may, chức năng này chỉ khả dụng bắt đầu từ PHP 7. 0. Đối với các phiên bản trước đó, bạn có thể sử dụng polyfill này trên GitHub
Phao ngẫu nhiên
Thay vì tạo số nguyên ngẫu nhiên, bạn cũng có thể muốn tạo số float. Điều này có thể được thực hiện dễ dàng bằng cách chia một số ngẫu nhiên với giá trị được trả về bởi
166. Ví dụ sau sẽ minh họa cách tạo số float ngẫu nhiên trong khoảng từ 0 đến 1 hoặc giữa bất kỳ giới hạn tối thiểu và tối đa nào khác
1