Cách tạo php mã thông báo ngẫu nhiên?

Đ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à 

1
53, 
1
54 và 
1
55

Với 

1
56, 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ừ 
1
57 và giá trị được trả về bởi 
1
58. 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 
1
59. Tuy nhiên, bắt đầu từ PHP 7. 1. 0, nó đã được đặt bí danh là 
1
59. Tuy nhiên, không giống như 
1
59, bạn có thể đặt giá trị của 
1
62 thấp hơn 
1
63 mà không gây ra lỗi

Với 

1
59, 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ừ 
1
57 và giá trị được trả về bởi 
1
66. 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 

1
67 để khởi tạo trình tạo số ngẫu nhiên và chuyển 
1
68 làm giá trị của tham số thứ hai

Hàm 

1
59 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 

1
70 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ị 
1
63 và 
1
62 được cung cấp, giá trị mặc định là 
1
73 và 
1
74. 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 

1
66. 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

Chủ Đề