Hàm Random String Trong Php

Difficulty: Intermediate Length: Medium Languages: EnglishEspañolहिंदीBahasa IndonesiaPусскийTiếng Việt

Vietnamese (Tiếng Việt) translation by Vy Cam Nguyen (you can also view the original English article)


Hãy để tôi ban đầu nội dung bài viết này bởi câu hỏi bảo rằng phần lớn không tồn tại sự kiện như thế nào đích thực tình cờ. Ngay cả kết quả của trò tung đồng xu kinh khủng về khía cạnh kim chỉ nan cũng có thể được dự đoán thù giả dụ chúng ta biết tác động ảnh hưởng của mọi nguyên tố tương quan, như ma tiếp giáp không gian, trọng lực cùng lực thuở đầu.

Bạn đang xem: Hàm random string trong php

Việc tạo ra những chuỗi đột nhiên có chữ và số cũng có thể có cơ chế giống như. Điều giỏi đẹp tuyệt vời nhất hoàn toàn có thể chờ đợi là tạo ra hầu hết số cùng chuỗi không tuân theo một pattern(hình mẫu) và một kẻ tấn công về trong thực tế sẽ không còn thể đân oán ra.

Trong lý giải này, công ty chúng tôi sẽ đề cập đến các kỹ thuật khác nhau để sản xuất số cùng chuỗi ký từ bỏ chữ ngẫu nhiên vào PHP. Một số trong các bọn chúng sẽ được mã hóa, trong lúc một vài không giống chỉ giành cho nhu cầu thông thường, nhỏng gán tên tệp tin trả bỗng dưng hoặc chế tác URL cùng đề xuất username(thương hiệu bạn dùng).

Tạo ra các số tình cờ vào PHP

Có cha hàm khác biệt để tạo nên số tình cờ vào PHP.. Tất cả những hàm đó sẽ dìm một quý giá về tối thiểu với tối đa có thể cho những số bỗng dưng và trả về một vài bất chợt cho mình. Đó là rand($min, $max), mt_rand($min, $max) với random_int($min, $max).

Với rand(), quý giá tối tphát âm với về tối đa của các integer (số nguyên) nhưng mà bạn có thể tạo nằm trong lòng 0 cùng quý hiếm được trả về vì getrandmax(). Trước Lúc tất cả PHP.. 7.1.0, hàm này chậm rộng khoảng tứ lần đối với mt_rand(). Tuy nhiên, bước đầu tự PHP.. 7.1.0, nó đang thành một alias của mt_rand(). Tuy nhiên, ko hệt như mt_rand(), chúng ta có thể đặt giá trị của $max tốt rộng $min cơ mà không gây ra lỗi.

Với mt_rand(), những giá trị tối tgọi và về tối nhiều của integer chúng ta có thể chế tạo nằm trong lòng 0 và quý hiếm được trả về do mt_getrandmax(). Nó phụ thuộc thực thi của Mersenne Twister nhằm tạo ra những số đột nhiên. Xem ra, tuy nhiên trước lúc bao gồm PHP 7.1.0, hàm này đã thực hiện một phiên phiên bản thuật tân oán không đúng đắn để tạo thành những số. Tuy nhiên, hàm này đã được sửa trong các phiên phiên bản mới rộng.

Hàm này thậm chí còn trnghỉ ngơi đề xuất giỏi rộng trong PHPhường. 7.2.0 bằng cách loại trừ lỗi modulo. Điều này tức là so với một trong những seed ví dụ, chuỗi số bỗng dưng của khách hàng hiện nay đang giỏi hơn một ít đối với những phiên bản cũ rộng. Măc mặc dù một số obatambeienwasirherbal.com chuyên dụng thực sự có thể nhờ vào khuynh hướng này. Nếu vậy, chúng ta cũng có thể áp dụng thuật toán thù seed cũ rộng bằng cách call hàm mt_srand() để seed trình chế tạo số bỗng dưng với truyền MT_RAND_PHPhường làm cho quý giá của tham mê số trang bị nhì.

Hàm mt_rand() có chu kỳ luân hồi 219937−1, về cơ bạn dạng có nghĩa là vào ngôi trường phù hợp tốt nhất có thể chúng ta đã đạt được số lượng thiên nhiên 219937−1 trước lúc chuỗi bắt đầu tái diễn. Quý khách hàng bắt buộc chú ý rằng Việc lặp lại một chuỗi ko giống hệt như bài toán tái diễn một số trong những ví dụ. Nói bí quyết khác, chúng ta có thể nhận được thuộc một vài hốt nhiên nhị lần, tuy nhiên điều ấy ko Có nghĩa là thiết yếu chuỗi này đã bắt đầu tái diễn. Trình từ bỏ sau đó là một ví dụ:

187 3276 1267 15 1267 34598 3467 125 17

Trong chuỗi trên, chúng tôi đang tất cả 1267 nhì lần vào hiệu quả, cơ mà điều ấy không tức là cục bộ chuỗi bước đầu lặp lại tiếp nối. Không thể tất cả thuộc một số trong những lặp lại mau chóng những điều đó trong một chuỗi thiên nhiên, cơ mà điều này tất cả thể!

Số ngulặng bất chợt được mã hóa an toàn

Nếu bạn có nhu cầu các số pseuvày (giả) đột nhiên được bảo mật bằng mã hóa, hàm random_int() trong PHPhường là tuyển lựa tốt nhất có thể của doanh nghiệp. Nó sẽ tạo nên những số thốt nhiên thân các giá trị $min với $max được hỗ trợ, mang định là PHP_INT_MIN với PHP_INT_MAX. Thật rủi ro, hàm này chỉ bao gồm ban đầu cung cấp từ PHPhường 7.0. Đối cùng với các phiên bạn dạng trước đó, bạn có thể thực hiện polyfill này bên trên GitHub.

Các số float ngẫu nhiên

Ttuyệt vày chế tác integer tự dưng, có thể bạn vẫn muốn tạo thành số float. Như vậy có thể được thực hiện dễ dãi bằng phương pháp chia một số trong những tình cờ với giá trị được trả về vày mt_getrandmax(). lấy một ví dụ sau đây đang minc họa phương pháp tạo nên một trong những float hốt nhiên trong vòng từ 0 đến 1 hoặc giữa ngẫu nhiên số lượng giới hạn buổi tối tđọc cùng buổi tối nhiều nào không giống.

Lúc chế tạo ra số float đột nhiên giữa các số lượng giới hạn nhất thiết, công ty chúng tôi bảo đảm an toàn rằng các integer đột nhiên không quá thừa $max - 1. Bằng bí quyết này, chúng tôi có thể chắc chắn là rằng bài toán góp phần float sẽ không rước số vượt quá số lượng giới hạn buổi tối đa.

Seed đến trình chế tác số ngẫu nhiên

Một khái niệm phải một chút lý giải là seeds. Nói một biện pháp dễ dàng, đây chỉ với rất nhiều số có thể được sử dụng để khởi tạo những hàm rand() với mt_rand() trước lúc tạo ra ngẫu nhiên số bỗng dưng làm sao. Hàm mà lại seed rand() được Hotline là srand($seed) cùng hàm tạo thành seed mt_rand() được Call là mt_srand($seed, $mode).

Điều đặc trưng yêu cầu đừng quên việc cung ứng một quý hiếm seed thuở đầu các lần trước khi điện thoại tư vấn rand() với mt_rand() sẽ không còn nhất thiết tạo nên các số thiên nhiên tốt rộng. Trong thực tiễn, áp dụng cùng một seed các lần đã cho chính mình cùng một số trong những ngẫu nhiên!

Seed một vài bỗng dưng cực kỳ hữu ích trong các trường hợp cơ mà bạn có nhu cầu sản xuất một chuỗi ngẫu nhiên cơ mà rất có thể tái diễn. Đoạn mã sau tạo ra cùng một chuỗi những số ngẫu nhiên Lúc chạy nhì lần.

Việc sản xuất những chuỗi hốt nhiên hoàn toàn có thể lặp lại theo cách này rất có thể góp gỡ lỗi các chương trình đang rất được thí điểm bằng cách áp dụng dữ liệu bất chợt nếu như bạn theo dõi và quan sát seed, bạn cũng có thể xào nấu cùng một tài liệu nguồn vào để tìm ra lỗi sai.

Tạo chuỗi ký tự tự dưng vào PHP

Có các phương pháp để tạo chuỗi ký kết từ bỏ chữ và số tự nhiên cùng các bạn thực hiện cái gì thì đã phụ thuộc vào yêu cầu của người sử dụng.

Xem thêm: Sự Thật Việc Bà Bầu Ăn Cua Đồng Bị Sảy Thai Gần Đây Có Thông Tin

Tạo ra những chuỗi xáo trộn

Nếu bạn muốn chế tạo những chuỗi ký kết trường đoản cú chữ với số đột nhiên xuất phát điểm từ 1 cỗ ký kết tự thắt chặt và cố định, chúng ta có thể áp dụng hàm str_shuffle($string). Hàm này vẫn trả về cho mình một chuỗi xáo trộn ngẫu nhiên. Bắt đầu từ PHPhường 7.1, thuật toán xác minh đồ vật từ đột nhiên của các ký kết trường đoản cú vào chuỗi hiệu quả đã có đổi khác thành Mersenne Twister.

Hãy nhớ là chuỗi thiên nhiên được chế tạo theo cách này không bình an về mặt bảo mật thông tin mã hóa. Tuy nhiên, chuỗi vẫn sẽ không còn thể đân oán trước được khi nhu cầu áp dụng phổ biến nlỗi tạo thành thương hiệu file hoặc URL bỗng dưng. Đây là vài ví dụ:

Kết quả của chúng ta cũng có thể đã khác nhau vào cả hai trường vừa lòng. Trong ngôi trường hòa hợp trước tiên, Cửa Hàng chúng tôi chỉ đảo lộn chuỗi ký từ bỏ được phxay cùng tiếp nối đem 10 ký kết từ bỏ thứ nhất của chuỗi đó. Trong trường hòa hợp thứ nhị, công ty chúng tôi vẫn thêm "video" vào đầu chuỗi được tạo ra và ".mp4" nghỉ ngơi cuối.

Phương thơm pháp tạo chuỗi ký kết từ chữ và số bỗng nhiên này siêu thuận lợi, tuy nhiên gặp mặt đề xuất một vài ba vụ việc. Ví dụ: các bạn sẽ không bao giờ dành được những ký kết từ giống nhau trong chuỗi bỗng dưng của mình nhị lần. Hình như, độ lâu năm của chuỗi công dụng bất chợt chỉ có thể nhiều năm bởi chuỗi nhập vào.

Tạo chuỗi ngẫu nhiên

Nếu các vụ việc tôi liệt kê sinh hoạt bên trên là một trong những tác nhân có tác dụng hư vụ việc, bạn có thể mong muốn chăm chú một số trong những thực thi khác. Các obatambeienwasirherbal.com tiếp sau đây đang giải quyết và xử lý cả nhì sự việc này.

Quý Khách rất có thể sửa thay đổi nó nhằm bổ sung những hậu tố cùng chi phí tố ví dụ vào chuỗi hốt nhiên vừa được tạo ra. Những người vẫn áp dụng PHPhường 7 có thể nâng cao hơn thế nữa câu hỏi chế tạo chuỗi bằng phương pháp áp dụng hàm bảo mật thông tin mã hóa random_int() cố vì mt_rand().

Tạo chuỗi hexadecimal (thập lục phân) ngẫu nhiên

Nếu bạn muốn tạo thành những chuỗi thập lục phân đột nhiên vào PHPhường, chúng ta cũng có thể áp dụng hàm md5($string, $rawDefput) hoặc hàm sha1($string, $rawDefput). Cả hai sẽ tạo ra hash của một chuỗi nhtràn vào.

Quý khách hàng sẽ thường xuyên nhận ra những quý hiếm hash duy nhất miễn sao dữ liệu vào là độc nhất vô nhị. Điều này rất có thể đã có được bằng cách sử dụng hiệu quả của hàm nhỏng time() có tác dụng dữ liệu nhập vào. Theo mang định, md5() sẽ trả về chuỗi hexadecimal 32 ký tự với sha1() vẫn trả về chuỗi hexadecimal 40 ký từ bỏ. Chúng hoàn toàn có thể được cắt theo một độ nhiều năm ví dụ bằng cách sử dụng hàm substr().

Dưới đấy là một ví dụ tác dụng được trả về vì các hàm này:

Nhỏng chúng ta cũng có thể thấy, vấn đề chế tạo ra những chuỗi hexadecimal bỗng nhiên cùng độc nhất nhiều năm cho tới 40 ký từ khôn cùng dễ dãi vào PHP..

Tạo chuỗi ngẫu nhiên tất cả bảo mật thông tin mã hóa

Ba hàm nhằm tạo các chuỗi cam kết từ bỏ chữ với số tự dưng mà họ vẫn đàm đạo cho đến bây giờ không có bảo mật mã hóa. May mắn vậy, PHPhường cũng có một hàm random_bytes($length) để chế tạo những byte đưa đột nhiên được bảo mật mã hóa. Ttê mê số $length xác định chuỗi hiệu quả đang dài từng nào.

Lúc chúng ta tất cả hiệu quả dưới dạng byte tự dưng, bạn có thể thực hiện hàm bin2hex() nhằm biến hóa chúng thành quý giá hexadecimal. Điều này sẽ làm tăng gấp hai chiều lâu năm của chuỗi.

Một công dụng không giống mà bạn có thể áp dụng để sinh sản các byte thiên nhiên được bảo mật mã hóa là openssl_random_pseudo_bytes($length, & $crypto_strong). Giá trị của tsi mê số lắp thêm hai hoàn toàn có thể được dùng để xác minh xem chuỗi công dụng sẽ tiến hành tạo thành bằng thuật tân oán bảo mật mã hóa hay không.

Tổng kết

Trong lý giải này, Shop chúng tôi đã chú ý bài toán tạo ra những số cùng những chuỗi ký kết từ chữ hốt nhiên trong PHP.. Việc tạo ra số bất chợt rất có thể có lợi trong vô số nhiều trường hợp, nlỗi trong số trò chơi mà lại bạn cần tạo nên phần lớn quân thù hoặc hốt nhiên cung ứng cho người nghịch một trong những làm mối về các chữ cái để chúng ta rất có thể tạo nên thành một tự hoàn chỉnh.

Cũng giống hệt như những số đột nhiên, vấn đề tạo thành các chuỗi chữ với số hốt nhiên cũng có thể khá hữu ích trong không ít ngôi trường thích hợp. Với sự hỗ trợ của str_shuffle(), bạn có thể lựa chọn cỗ cam kết từ như thế nào xuất hiện thêm vào chuỗi tự dưng của bản thân. Với sha1 () với md5 (), chúng ta cũng có thể dễ dãi sinh sản những chuỗi thập lục phân bất chợt và với Random_bytes () chúng ta có thể tạo nên những chuỗi bảo mật bằng mật mã. Vấn đề này đang được cho phép các bạn tạo nên các thương hiệu file và username bất chợt tuy vậy nặng nề đoán thù.

Tôi hi vọng bạn thích trả lời này. Nếu bạn bao gồm bất kỳ thắc mắc, hãy nêu ra trong phần comment.