Tôi đang tạo trang web PHP liên quan đến việc người dùng đăng ký và tôi tự hỏi về các phương pháp hay nhất cho mã "xác nhận email".Thực tiễn tốt nhất cho mã xác nhận email
Người dùng mới phải xác nhận địa chỉ email của họ - tôi làm điều này bằng cách tạo mã và gửi mã cho người dùng trong email, sau đó họ có thể sử dụng để kích hoạt tài khoản của anh ấy. Thay vì lưu trữ quan trọng này trong một cơ sở dữ liệu, tôi đang sử dụng một workaround ít tiện dụng: mã là kết quả của:
md5("xxxxxxxxx".$username."xxxxxxxxxxx".$timestamp."xxxxxxxxx");
đâu $ timestamp đề cập đến thời gian sử dụng sáng tạo. Về tổng thể tôi khá hài lòng với điều này, nhưng sau đó tôi đã suy nghĩ, điều này là đủ an toàn? Và những gì về khả năng va chạm? Và tôi cũng cần tạo mã để đặt lại mật khẩu, v.v. Nếu tôi đã sử dụng phương pháp tương tự, một xung đột có thể khiến một người dùng vô tình đặt lại mật khẩu của người dùng khác. Và điều đó không tốt.
Vậy bạn làm những việc này như thế nào? Suy nghĩ của tôi là một bảng có định dạng sau:
codePK (int, a-I), userID (int), type (int), code (varchar 32), date (timestamp)
Trường hợp 'loại' là 1, 2 hoặc 3 có nghĩa là "kích hoạt", "thay đổi email" hoặc "đặt lại mật khẩu". Đây có phải là cách hay để làm điều đó không? Bạn có cách nào tốt hơn không?
Sử dụng phương pháp tương tự như trên, tôi có thể tự động xóa bất kỳ thứ gì trong hai ngày mà không sử dụng cron-jobs không? Máy chủ của tôi (nearfreespeech.net) không hỗ trợ chúng. Nếu có thể tôi muốn tránh có một cron-job trên một máy chủ bên ngoài mà wget của một kịch bản mà xóa mọi thứ, vì đó chỉ là lộn xộn = P.
Cảm ơn!
Mala
Cập nhật:
Để làm rõ: Tôi đã nhận ra cách duy nhất để bảo mật và an toàn đi về nhiệm vụ này là bằng cách sử dụng một cơ sở dữ liệu, đó là những gì các chức năng ban đầu đã cố gắng để tránh. Câu hỏi của tôi là về cách bảng (hoặc bảng?) Nên được cấu trúc. Ai đó đề nghị tôi làm với codePK và chỉ làm cho mã một PK. Vì vậy, trong ngắn hạn, câu hỏi của tôi là: đây là những gì bạn làm gì?
Thực tiễn tốt nhất cho mã xác nhận e-mail? Để chúng ra ... – Leo
Điều quan trọng là người dùng có địa chỉ email hợp lệ trong hồ sơ, nếu chỉ để đặt lại mật khẩu. Trong khi người ta có thể tuyên bố "đó là trách nhiệm của người dùng", đây là thế giới thực mà chúng ta đang xử lý ... Ngay khi người đầu tiên "KHÔNG BAO GIỜ quên mật khẩu", hãy quên mật khẩu của anh ta, có thể là một hoặc hai tuần, hệ thống sẽ là "người ngu ngốc nhất". – Mala