Tạo chuỗi ngẫu nhiên trong php
Đến một thời điểm nào đó chắc hẳn bạn sẽ cần tạo một chuỗi ngẫu nhiên (random string) để xác nhận tài khoản hoặc 1 cái gì đó mà bạn cần tới, hôm nay mình sẽ giúp các bạn 1 đoạn code rất đơn giản để làm công việc này. Nào chúng ta cùng bắt đầu nào.. Đầu tiên Chúng ta sẽ đặt tên hàm này là ...Đến một thời điểm nào đó chắc hẳn bạn sẽ cần tạo một chuỗi ngẫu nhiên (random string) để xác nhận tài khoản hoặc 1 cái gì đó mà bạn cần tới, hôm nay mình sẽ giúp các bạn 1 đoạn code rất đơn giản để làm công việc này. Nào chúng ta cùng bắt đầu nào.. Show
Đầu tiên Chúng ta sẽ đặt tên hàm này là rand_string, hàm này sẽ yêu cầu 1 tham số $length ( chiều dài của chuỗi ) function rand_string( $length ) { Kế tiếp chúng ta sẽ tạo ra 1 chuỗi bao gồm tất cả các kí tự mà bạn muốn dùng làm hàm ngẫu nhiên $chars = “abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789”; Sau đó chúng ta sẽ tạo ra 1 vòng lặp, vòng lặp này được dùng để tạo ra các kí tự ngẫu nhiên trong chuỗi chúng ta vừa tạo trước đây, bạn xem đoạn code sau sẽ hiểu rõ hơn ý mình muốn nói
Việc cuối cùng là chúng ta dùng hàm substr dùng để cắt ra số lượng kí tự mà chúng ta muốn lấy ra $str = substr( str_shuffle( $chars ), 0, $length ); vậy là đã hoàn tất , bây giờ chúng ta chỉ cần ráp tất cả các đoạn code trên là xong.
Cách sử dung: Rất đơn giản khi nào bạn cần sử dụng thì bạn chỉ cần gọi hàm ra như sau: $my_string = rand_string( 5 ); Chúc các bạn thành công ! Tags: hoc php php code php string ramdom string tao chuoi ngau nhien thu thuat php Chuyên Mục: PHP Bài viết được đăng bởi webmaster answer 1255 Để trả lời câu hỏi này cụ thể, hai vấn đề:
Đây là một đoạn mã với các sửa chữa:
Xuất chuỗi ngẫu nhiên với cuộc gọi dưới đây:
1255 hữu ích 5 bình luận chia sẻ answer 341
Một cách nữa.CẬP NHẬT (bây giờ điều này tạo ra bất kỳ độ dài của chuỗi):
Đó là nó. :) 341 hữu ích 5 bình luận chia sẻ answer 283 Có rất nhiều câu trả lời cho câu hỏi này, nhưng không có câu trả lời nào sử dụng Trình tạo số giả ngẫu nhiên an toàn (CSPRNG). Câu trả lời đơn giản, an toàn và chính xác là sử dụng RandomLib và không phát minh lại bánh xe. Đối
với những người khăng khăng phát minh ra giải pháp của riêng bạn, PHP 7.0.0 sẽ cung cấp Tạo an toàn các số nguyên ngẫu nhiên trong PHP không phải là một nhiệm vụ tầm thường. Bạn phải luôn luôn kiểm tra với các chuyên gia mật mã StackExchange thường trú trước khi bạn triển khai một thuật toán tự trồng trong sản xuất. Với một trình tạo số nguyên an toàn tại chỗ, việc tạo một chuỗi ngẫu nhiên với CSPRNG là một cuộc dạo chơi trong công viên. Tạo một chuỗi ngẫu nhiên, an toàn
Cách sử dụng :
Bản trình diễn : https://3v4l.org/b4PST (Bỏ qua các lỗi PHP 5; nó cần Random_compat) 283 hữu ích 5 bình luận chia sẻ answer 124 Tạo một chuỗi hexdec dài 20 char:
Trong PHP 7 ( Random_bytes () ):
124 hữu ích 5 bình luận chia sẻ answer 81 @tasmaniski: câu trả lời của bạn đã làm việc cho tôi. Tôi đã có cùng một vấn đề, và tôi sẽ đề nghị nó cho những người đang tìm kiếm cùng một câu trả lời. Đây là từ @tasmaniski:
81 hữu ích 5 bình luận chia sẻ answer 43 Tùy thuộc vào ứng dụng của bạn (tôi muốn tạo mật khẩu), bạn có thể sử dụng
Là cơ sở64, chúng có thể chứa
43 hữu ích 5 bình luận chia sẻ answer 25 Tôi biết điều này có thể hơi muộn với trò chơi, nhưng đây là một lớp đơn giản tạo ra một chuỗi ngẫu nhiên thực sự mà không có bất kỳ vòng lặp cấp độ kịch bản hoặc sử dụng các thư viện openssl.
Để phá vỡ nó để các tham số rõ ràng
Phương pháp này hoạt động bằng cách lặp lại ngẫu nhiên danh sách ký tự, sau đó xáo trộn chuỗi kết hợp và trả về số lượng ký tự được chỉ định. Bạn có thể chọn ngẫu nhiên thêm điều này, bằng cách ngẫu nhiên độ dài của chuỗi được trả về, thay thế
25 hữu ích 5 bình luận chia sẻ answer 24
Tada! 24 hữu ích 5 bình luận chia sẻ answer 23 Một cách tốt hơn để thực hiện chức năng này là:
23 hữu ích 1 bình luận chia sẻ answer 19
Hoặc chỉ trực tiếp lặp lại giá trị trả về:
Ngoài ra, trong chức năng của bạn, bạn có một chút sai lầm. Trong vòng lặp for, bạn cần sử dụng
19 hữu ích 0 bình luận chia sẻ answer 14 Đầu tiên, bạn xác định bảng chữ cái bạn muốn sử dụng:
Sau đó, sử dụng
Cuối cùng, bạn sử dụng dữ liệu ngẫu nhiên này để tạo mật khẩu. Bởi vì mỗi ký tự
Ngoài ra, và nói chung là tốt hơn, là sử dụng RandomLib và SecurityLib :
14 hữu ích 2 bình luận chia sẻ answer 9 Phương pháp ngắn ..Dưới đây là một số phương pháp ngắn nhất để tạo chuỗi ngẫu nhiên
9 hữu ích 0 bình luận chia sẻ answer 9 Tôi đã kiểm tra hiệu năng của hầu hết các chức năng phổ biến ở đó, thời gian cần thiết để tạo ra 1000'000 chuỗi gồm 32 ký hiệu trên hộp của tôi là:
Xin lưu ý không quan trọng là nó thực sự dài bao nhiêu nhưng chậm hơn và cái nào nhanh hơn để bạn có thể chọn theo yêu cầu của mình, bao gồm cả mật mã, sẵn sàng, v.v. chất nền () xung quanh MD5 đã được thêm vào vì độ chính xác nếu bạn cần chuỗi ngắn hơn 32 ký hiệu. Vì lợi ích của câu trả lời: chuỗi không được nối nhưng được ghi đè và kết quả của hàm không được lưu trữ. 9 hữu ích 0 bình luận chia sẻ answer 7
7 hữu ích 1 bình luận chia sẻ answer 7 Cái này được lấy từ các nguồn adminer :
Adminer , công cụ quản lý cơ sở dữ liệu viết bằng PHP. 7 hữu ích 0 bình luận chia sẻ answer 6 Một cách rất nhanh là làm một cái gì đó như:
Điều này sẽ tạo ra một chuỗi ngẫu nhiên với độ dài 10 ký tự. Tất nhiên, một số người có thể nói rằng nó nặng hơn một chút về mặt tính
toán, nhưng ngày nay các bộ xử lý được tối ưu hóa để chạy thuật toán md5 hoặc sha256 rất nhanh. Và tất nhiên, nếu 6 hữu ích 1 bình luận chia sẻ answer 6 Chức năng trợ giúp từ khung công tác Laravel 5
6 hữu ích 1 bình luận chia sẻ answer 5
Nguồn từ http://www.xeweb.net/2011/02/11/generate-a-random-opes-az-0-9-in-php/ 5 hữu ích 0 bình luận chia sẻ answer 4 Phiên bản chỉnh sửa của hàm hoạt động tốt, chỉ một vấn đề tôi tìm thấy: Bạn đã sử dụng sai ký tự để đóng $ ký tự, do đó, ký tự 'đôi khi là một phần của chuỗi ngẫu nhiên được tạo. Để khắc phục điều này, hãy thay đổi:
đến:
Theo cách này, chỉ các ký tự kèm theo được sử dụng và ký tự 'sẽ không bao giờ là một phần của chuỗi ngẫu nhiên được tạo. 4 hữu ích 0 bình luận chia sẻ answer 4 Một lớp lót khác, tạo ra một chuỗi ngẫu nhiên gồm 10 ký tự có chữ và số. Nó sẽ tạo một mảng với
Lưu ý: chỉ hoạt động trong PHP 5.3+ 4 hữu ích 3 bình luận chia sẻ answer 4 một đường thẳng.
4 hữu ích 2 bình luận chia sẻ answer 3 Tôi thích bình luận cuối cùng sử dụng openssl_random_pseudo_bytes, nhưng đó không phải là giải pháp cho tôi vì tôi vẫn phải xóa các ký tự tôi không muốn và tôi không thể có được chuỗi độ dài đã đặt. Đây là giải pháp của tôi ...
3 hữu ích 0 bình luận chia sẻ answer 3
3 hữu ích 0 bình luận chia sẻ answer 3 Có những lựa chọn thay thế tốt hơn cho vấn đề này, nhiều cái đã được đăng rồi nên tôi chỉ cung cấp cho bạn công cụ của bạn với các bản sửa lỗi
bạn cũng có thể quan tâm:
hoặc một số khác:
3 hữu ích 2 bình luận chia sẻ answer 2 Một cách khác để tạo một chuỗi ngẫu nhiên trong PHP là:
2 hữu ích 0 bình luận chia sẻ answer 2 Có một mã đơn giản:
Có hướng dẫn đơn giản:
2 hữu ích 0 bình luận chia sẻ answer 2 Tham số một lớp chỉ sử dụng các hàm riêng của PHP , hoạt động kể từ PHP 5.1.0
2 hữu ích 0 bình luận chia sẻ answer 1
1 hữu ích 1 bình luận chia sẻ answer 1
1 hữu ích 0 bình luận chia sẻ answer 1 Đây là cách tôi đang thực hiện để có được một khóa ngẫu nhiên duy nhất thực sự:
Bạn có thể sử dụng time () vì đây là dấu thời gian Unix và luôn duy nhất so với các ngẫu nhiên khác được đề cập ở trên. Sau đó, bạn có thể tạo md5sum của điều đó và lấy độ dài mong muốn bạn cần từ chuỗi MD5 được tạo . Trong trường hợp này, tôi đang sử dụng 10 ký tự và tôi có thể sử dụng chuỗi dài hơn nếu tôi muốn làm cho nó độc đáo hơn. Tôi hi vọng cái này giúp được. 1 hữu ích 3 bình luận chia sẻ |