Làm cách nào để tạo id tăng tự động chữ và số trong PHP?

Điều tương tự cũng được áp dụng cho việc tạo số ngẫu nhiên và chuỗi 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 tuân 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, 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

Làm cách nào để tạo id tăng tự động chữ và số trong 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

  • Làm cách nào để tạo id tăng tự động chữ và số trong PHP?
    Làm cách nào để tạo id tăng tự động chữ và số trong PHP?
    Làm cách nào để tạo id tăng tự động chữ và số trong PHP?

    Nguyên tắc cơ bản về PHP

    Làm cách nào để tạo id tăng tự động chữ và số trong PHP?
    Làm cách nào để tạo id tăng tự động chữ và số trong PHP?
    Làm cách nào để tạo id tăng tự động chữ và số trong 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
<?php
2
3
// Output: 0.69458310943776

4
echo mt_rand(0, mt_getrandmax())/mt_getrandmax();
5
187 3276 1267 15 1267 34598 3467 125 17
0
187 3276 1267 15 1267 34598 3467 125 17
1
187 3276 1267 15 1267 34598 3467 125 17
2
187 3276 1267 15 1267 34598 3467 125 17
3
187 3276 1267 15 1267 34598 3467 125 17
4
187 3276 1267 15 1267 34598 3467 125 17
5
187 3276 1267 15 1267 34598 3467 125 17
6
187 3276 1267 15 1267 34598 3467 125 17
7
187 3276 1267 15 1267 34598 3467 125 17
8
187 3276 1267 15 1267 34598 3467 125 17
9
1
0
1
1
1
2
1
3
1
4
1
5
1
6
1
7
1
8
1
9
<?php
0
<?php
1
<?php
2

Khi tạo số float ngẫu nhiên giữa các giới hạn đã cho, chúng tôi đảm bảo rằng các số nguyên ngẫu nhiên không vượt quá

1
76. Bằng cách này, chúng tôi có thể chắc chắn rằng việc thêm phần float sẽ không lấy số vượt quá giới hạn tối đa

Tạo hạt giống cho bộ tạo số ngẫu nhiên

Một khái niệm cần giải thích một chút là hạt giống. Nói một cách đơn giản, đây chỉ là những số có thể dùng để khởi tạo các hàm 

1
56 và 
1
59 trước khi tạo bất kỳ số ngẫu nhiên nào. Hàm mà hạt giống 
1
56 được gọi là 
1
80 và hàm mà hạt giống 
1
59 được gọi là 
1
82

Điều quan trọng cần nhớ là việc cung cấp giá trị gốc ban đầu mỗi lần trước khi gọi 

1
56 và 
1
59 không nhất thiết sẽ tạo ra các số ngẫu nhiên tốt hơn. Trên thực tế, sử dụng cùng một hạt giống mỗi lần cũng sẽ cung cấp cho bạn cùng một số ngẫu nhiên

1
<?php
2
3
<?php
7
4
<?php
9
5
2
1
187 3276 1267 15 1267 34598 3467 125 17
0
187 3276 1267 15 1267 34598 3467 125 17
2
<?php
7
187 3276 1267 15 1267 34598 3467 125 17
4
<?php
9
187 3276 1267 15 1267 34598 3467 125 17
6
2
1
187 3276 1267 15 1267 34598 3467 125 17
8
1
0
<?php
7
1
1
<?php
9
1
3
2
1
1
5
1
6
<?php
2

Tạo một số ngẫu nhiên rất hữu ích trong các trường hợp bạn muốn tạo một chuỗi ngẫu nhiên nhưng có thể lặp lại. Đoạn mã sau tạo cùng một chuỗi số ngẫu nhiên khi chạy hai lần

1
<?php
2
3
<?php
7
4
5
// Output: 0.69458310943776

6
187 3276 1267 15 1267 34598 3467 125 17
0
187 3276 1267 15 1267 34598 3467 125 17
2
// Output: 0.69458310943776

9
187 3276 1267 15 1267 34598 3467 125 17
4
4
1
187 3276 1267 15 1267 34598 3467 125 17
6
4
3
187 3276 1267 15 1267 34598 3467 125 17
8
187 3276 1267 15 1267 34598 3467 125 17
9
1
0
1
1
4
8
1
3
echo mt_rand(0, mt_getrandmax())/mt_getrandmax();
0
1
5
1
6
echo mt_rand(0, mt_getrandmax())/mt_getrandmax();
3
1
8
echo mt_rand(0, mt_getrandmax())/mt_getrandmax();
5

Tạo các chuỗi ngẫu nhiên có thể tái tạo theo cách này có thể giúp gỡ lỗi các chương trình đang được thử nghiệm bằng cách sử dụng dữ liệu ngẫu nhiên—nếu bạn theo dõi hạt giống, bạn có thể tạo lại cùng một đầu vào để tìm ra lỗi sai

Tạo chuỗi chữ và số ngẫu nhiên trong PHP

Có nhiều cách để tạo chuỗi chữ và số ngẫu nhiên và cách bạn sử dụng sẽ tùy thuộc vào nhu cầu của bạn

Tạo ID duy nhất

Nếu bạn chỉ muốn tạo một chuỗi duy nhất và chuỗi đó không cần phải bảo mật bằng mật mã, thì hãy cân nhắc sử dụng hàm 

1
85. Nó trả về một mã định danh duy nhất dựa trên dấu thời gian hiện tại

Hàm cũng chấp nhận hai tham số để thêm tiền tố hoặc tăng entropy của chuỗi được tạo. Dưới đây là một số ví dụ của nó

1
<?php
2
3
5
0
4
5
2_______32_______18_______0
5
5
187 3276 1267 15 1267 34598 3467 125 17
2
5
7
187 3276 1267 15 1267 34598 3467 125 17
4
187 3276 1267 15 1267 34598 3467 125 17
6
187 3276 1267 15 1267 34598 3467 125 17
00
187 3276 1267 15 1267 34598 3467 125 17
8
187 3276 1267 15 1267 34598 3467 125 17
02
1
0_______0_______1_______26_______2

Tạo chuỗi xáo trộn

Nếu muốn tạo chuỗi chữ và số ngẫu nhiên từ một nhóm ký tự cố định, bạn có thể sử dụng hàm 

1
86. Hàm này sẽ cung cấp cho bạn một chuỗi được xáo trộn ngẫu nhiên. Bắt đầu từ PHP 7. 1, thuật toán xác định thứ tự ngẫu nhiên của các ký tự trong chuỗi đầu ra đã được thay đổi thành Mersenne Twister

Hãy nhớ rằng chuỗi ngẫu nhiên được tạo theo cách này không an toàn bằng mật mã. Tuy nhiên, chuỗi vẫn sẽ khá khó đoán khi sử dụng phổ biến như tạo tên tệp hoặc URL ngẫu nhiên. Đây là vài ví dụ

1
<?php
2
3
187 3276 1267 15 1267 34598 3467 125 17
10
4
187 3276 1267 15 1267 34598 3467 125 17
12
5
187 3276 1267 15 1267 34598 3467 125 17
14
187 3276 1267 15 1267 34598 3467 125 17
0
187 3276 1267 15 1267 34598 3467 125 17
2
187 3276 1267 15 1267 34598 3467 125 17
17
187 3276 1267 15 1267 34598 3467 125 17
4
187 3276 1267 15 1267 34598 3467 125 17
19
187 3276 1267 15 1267 34598 3467 125 17
6
187 3276 1267 15 1267 34598 3467 125 17
21
187 3276 1267 15 1267 34598 3467 125 17
8
1
0_______26_______2

Đầu ra của bạn rất có thể sẽ khác nhau trong cả hai trường hợp. Trong trường hợp đầu tiên, chúng tôi chỉ xáo trộn chuỗi ký tự được phép và sau đó lấy 10 ký tự đầu tiên của nó. Trong trường hợp thứ hai, chúng tôi đã thêm "video" vào đầu chuỗi được tạo và ". mp4" ở cuối

Phương pháp tạo chuỗi chữ và số ngẫu nhiên này rất dễ, nhưng nó có một số vấn đề. Ví dụ: bạn sẽ không bao giờ nhận được hai lần các ký tự giống nhau trong chuỗi ngẫu nhiên của mình. Ngoài ra, độ dài của chuỗi đầu ra ngẫu nhiên chỉ có thể dài bằng chuỗi đầu vào

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

Nếu các vấn đề tôi liệt kê ở trên là một công cụ giải quyết vấn đề, bạn có thể muốn xem xét một số triển khai khác. Đoạn mã sau sẽ giải quyết cả hai vấn đề này

1
<?php
2
3
187 3276 1267 15 1267 34598 3467 125 17
17
4
5
187 3276 1267 15 1267 34598 3467 125 17
32
187 3276 1267 15 1267 34598 3467 125 17
0
187 3276 1267 15 1267 34598 3467 125 17
34
187 3276 1267 15 1267 34598 3467 125 17
2
187 3276 1267 15 1267 34598 3467 125 17
36
187 3276 1267 15 1267 34598 3467 125 17
4
187 3276 1267 15 1267 34598 3467 125 17
38
187 3276 1267 15 1267 34598 3467 125 17
6
187 3276 1267 15 1267 34598 3467 125 17
40
187 3276 1267 15 1267 34598 3467 125 17
8
187 3276 1267 15 1267 34598 3467 125 17
42
1
0
187 3276 1267 15 1267 34598 3467 125 17
44
1
1
1
3
187 3276 1267 15 1267 34598 3467 125 17
47
1
5
187 3276 1267 15 1267 34598 3467 125 17
9
1
6
1
8
187 3276 1267 15 1267 34598 3467 125 17
52
<?php
0
187 3276 1267 15 1267 34598 3467 125 17
54
<?php
1
187 3276 1267 15 1267 34598 3467 125 17
56
187 3276 1267 15 1267 34598 3467 125 17
57
187 3276 1267 15 1267 34598 3467 125 17
58
187 3276 1267 15 1267 34598 3467 125 17
54
187 3276 1267 15 1267 34598 3467 125 17
60
187 3276 1267 15 1267 34598 3467 125 17
61
187 3276 1267 15 1267 34598 3467 125 17
62
187 3276 1267 15 1267 34598 3467 125 17
63
187 3276 1267 15 1267 34598 3467 125 17
64
187 3276 1267 15 1267 34598 3467 125 17
65
187 3276 1267 15 1267 34598 3467 125 17
66
<?php
2

Bạn có thể sửa đổi nó để thêm các hậu tố và tiền tố cụ thể vào chuỗi ngẫu nhiên được tạo. Những người đang sử dụng PHP 7 có thể cải thiện hơn nữa việc tạo chuỗi bằng cách sử dụng hàm bảo mật bằng mật mã 

1
70 thay vì 
1
59

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

Nếu muốn tạo chuỗi thập lục phân ngẫu nhiên trong PHP, bạn cũng có thể sử dụng hàm 

1
89 hoặc 
1
90. Cả hai sẽ tạo ra giá trị băm của một chuỗi đầu vào nhất định

Bạn sẽ tiếp tục nhận được các giá trị băm duy nhất miễn là đầu vào là duy nhất. Điều này có thể đạt được bằng cách sử dụng đầu ra của một hàm như 

1
91 làm đầu vào. Theo mặc định, _______0_______92 sẽ trả về chuỗi thập lục phân gồm 32 ký tự và 
1
93 sẽ trả về chuỗi thập lục phân gồm 40 ký tự. Chúng có thể được cắt bớt theo độ dài cụ thể bằng cách sử dụng hàm 
1
94

Dưới đây là một ví dụ về đầu ra được trả về bởi các chức năng này

1
<?php
2
3
187 3276 1267 15 1267 34598 3467 125 17
72
4
187 3276 1267 15 1267 34598 3467 125 17
74
5
187 3276 1267 15 1267 34598 3467 125 17
0
187 3276 1267 15 1267 34598 3467 125 17
77
187 3276 1267 15 1267 34598 3467 125 17
2
187 3276 1267 15 1267 34598 3467 125 17
79
187 3276 1267 15 1267 34598 3467 125 17
4
187 3276 1267 15 1267 34598 3467 125 17
6
187 3276 1267 15 1267 34598 3467 125 17
82
187 3276 1267 15 1267 34598 3467 125 17
8
187 3276 1267 15 1267 34598 3467 125 17
84
1
0
1
1
187 3276 1267 15 1267 34598 3467 125 17
87
1
3
187 3276 1267 15 1267 34598 3467 125 17
89
1
5
1
6
<?php
2

Như bạn có thể thấy, việc tạo các chuỗi thập lục phân ngẫu nhiên và duy nhất dài tối đa 40 ký tự rất dễ dàng trong PHP

Tạo các chuỗi ngẫu nhiên an toàn bằng mật mã

Ba chức năng để tạo các chuỗi ký tự chữ và số ngẫu nhiên mà chúng ta đã thảo luận cho đến nay không an toàn về mặt mã hóa. May mắn thay, PHP cũng có một chức năng được gọi là 

1
95 để tạo các byte giả ngẫu nhiên an toàn bằng mật mã. Tham số 
1
96 xác định độ dài của chuỗi đầu ra

Khi bạn có đầu ra dưới dạng byte ngẫu nhiên, bạn có thể sử dụng hàm 

1
97 để chuyển đổi chúng thành giá trị thập lục phân. Điều này sẽ tăng gấp đôi chiều dài của chuỗi

1
<?php
2
3
187 3276 1267 15 1267 34598 3467 125 17
97
4
18_______99
5
187 3276 1267 15 1267 34598 3467 125 17
0
1
02
187 3276 1267 15 1267 34598 3467 125 17
2
1
04
187 3276 1267 15 1267 34598 3467 125 17
4
187 3276 1267 15 1267 34598 3467 125 17
6
1
07
187 3276 1267 15 1267 34598 3467 125 17
8
1
09
1
0_______0_______1_______26_______2

Một chức năng khác mà bạn có thể sử dụng để tạo các byte ngẫu nhiên được bảo mật bằng mật mã là 

1
98. Giá trị của tham số thứ hai có thể được sử dụng để xác định xem chuỗi đầu ra có được tạo bằng thuật toán bảo mật bằng mật mã hay không

Trong các ví dụ trên, việc sử dụng hàm 

1
97 cung cấp cho chúng tôi giá trị cuối cùng dưới dạng chuỗi thập lục phân. Nếu vì lý do nào đó, bạn muốn có một chuỗi chữ và số ngẫu nhiên được bảo mật bằng mật mã sử dụng tất cả các ký tự từ a đến z, thì bạn nên cân nhắc sử dụng hàm sau

1
<?php
2
3
1
17
4
187 3276 1267 15 1267 34598 3467 125 17
36
5
1
21
187 3276 1267 15 1267 34598 3467 125 17
0
1
23
187 3276 1267 15 1267 34598 3467 125 17
2
1
25
187 3276 1267 15 1267 34598 3467 125 17
4
1
27
187 3276 1267 15 1267 34598 3467 125 17
6
187 3276 1267 15 1267 34598 3467 125 17
44
187 3276 1267 15 1267 34598 3467 125 17
8
1
0
187 3276 1267 15 1267 34598 3467 125 17
47
1
1
187 3276 1267 15 1267 34598 3467 125 17
9
1
3
1
5
1
37
1
6
1
39
1
8
<?php
0
1
42
<?php
1
1
39
187 3276 1267 15 1267 34598 3467 125 17
56
187 3276 1267 15 1267 34598 3467 125 17
58
1
47
187 3276 1267 15 1267 34598 3467 125 17
60
1
39
187 3276 1267 15 1267 34598 3467 125 17
61
187 3276 1267 15 1267 34598 3467 125 17
63
<?php
2

Hàm 

<?php
00 mà chúng tôi đã viết ở trên chấp nhận một tham số duy nhất xác định độ dài của chuỗi mà chúng tôi muốn nó trả về. Chúng tôi chạy một vòng lặp 
<?php
01 để tạo ra một số nguyên ngẫu nhiên trong phạm vi từ 0 đến 36. Sau đó, chúng tôi chuyển đổi số của mình từ cơ số 10 sang cơ số 36 bằng cách sử dụng hàm 
<?php
02. Ký tự kết quả có thể là bất kỳ thứ gì từ chữ số 0 đến 9 và ký tự a đến z. Chúng tôi nối nó vào cuối chuỗi ngẫu nhiên của chúng tôi. Cuối cùng, chúng tôi trả về chuỗi đầy đủ của mình

Suy nghĩ cuối cùng

Trong hướng dẫn này, chúng ta đã xem xét việc tạo các số ngẫu nhiên và chuỗi ký tự chữ và số trong PHP. Tạo số ngẫu nhiên có thể hữu ích trong nhiều tình huống, chẳng hạn như trong các trò chơi mà bạn phải sinh ra kẻ thù hoặc cung cấp ngẫu nhiên cho người dùng một số manh mối về các chữ cái để họ có thể tạo thành một từ hoàn chỉnh.

Cũng giống như các số ngẫu nhiên, việc tạo các chuỗi chữ và số ngẫu nhiên cũng có thể khá hữu ích trong nhiều trường hợp. Với sự trợ giúp của 

<?php
03, bạn có thể chọn bộ ký tự nào xuất hiện trong chuỗi ngẫu nhiên của mình. Với 
1
93 và 
1
92, bạn có thể dễ dàng tạo các chuỗi thập lục phân ngẫu nhiên và với 
<?php
06 bạn có thể tạo các chuỗi bảo mật bằng mật mã. Điều này sẽ cho phép bạn tạo các tên tệp và tên người dùng ngẫu nhiên nhưng có ý nghĩa khó đoán

Làm cách nào để tạo id chữ và số trong PHP?

Hoặc bạn có thể dùng thử. .
Tạo một mảng với một trong mỗi chữ cái của bảng chữ cái
Xáo trộn nó bằng hàm shuffle()
Nếu các chữ cái có thể lặp lại, hãy sử dụng current() để lấy chữ cái ra khỏi phím đầu tiên, sau đó cải tổ lại. .
Sau khi xây dựng phần chữ cái của chuỗi, hãy tạo một số ngẫu nhiên có phạm vi phù hợp bằng cách sử dụng rand()

Làm cách nào để tăng giá trị chữ và số trong PHP?

Ví dụ 1. Chương trình tăng các chữ cái khác nhau và in nó. $i = 'a' ; print (++ $i. " " );

Làm cách nào để tự động tăng số id bằng các chữ cái và số trong PHP?

6 câu trả lời .
lấy ID cuối cùng [KP-0001]
xóa một số ký tự và đặt nó vào một biến [KP-]
chuyển đổi phần còn lại thành số vì nó là một chuỗi [0001]
tăng thêm 1 [1 + 1 = 2]
chuyển đổi nó trở lại chuỗi và đệm số 0 ở bên phải [0002]
nối biến và số mới tăng [KP-0002]
lưu nó