Tôi đang xây dựng một ứng dụng cơ bản và tôi đang cố gắng tìm ra cách tôi có thể chuyển thông tin người dùng từ login.php đến index.php. Đây là những gì tôi đã có cho đến nay: Tôi có một trang đăng nhập gửi và xác thực người dùng thông qua cơ sở dữ liệu thông qua một lớp người dùng. Sau đó, các thuộc tính của người dùng được đặt thành các giá trị được trả về từ cơ sở dữ liệu. Từ đó id được lưu trữ trong một phiên. Làm cách nào để tôi truy cập thông tin người dùng từ trang này đến trang khác. Tôi có nên xây dựng một phương thức xây dựng để truy vấn cơ sở dữ liệu với id phiên không? Đó có phải là cách tiếp cận an toàn hoặc hợp lệ không? Một ví dụ sẽ là tràn ngăn xếp. Cách bạn có thể thấy tên người dùng của mình ở đầu mỗi trang.Tôi làm cách nào để có thể truy cập thông tin người dùng sau khi đăng nhập?
Trả lời
Âm thanh như bạn có ý tưởng chung của phiên xử lý xuống. Vì vậy, bạn chỉ cần hỏi phương pháp nào là an toàn, hoặc được tối ưu hóa hoặc bất cứ điều gì.
Thông thường, bạn nên lưu trữ ít thông tin trong phiên hoặc cookie càng tốt để bạn không mở người dùng của mình tới các cuộc tấn công đánh cá đơn giản. Vì vậy, lý tưởng có nghĩa là bạn có một bảng phiên trong cơ sở dữ liệu mà bạn có thể tham chiếu chéo với id phiên.
Có, bạn sẽ chạy truy vấn trên mỗi lần tải trang, nhưng điều đó không thực sự có nhiều chi phí trên một trang web chuẩn. Và nó không phải là không an toàn miễn là bạn đúng cách khử trùng đầu vào của bạn. Bằng cách đó bạn sẽ không bị gỡ xuống nếu người dùng thao túng thông tin phiên của họ.
Ngoài ra, nếu bạn chỉ sử dụng id người dùng và tên người dùng, bạn có thể lưu trữ an toàn những người đó trong phiên và tránh truy vấn trên mỗi lần tải trang.Chỉ cần không đi hạt lấp đầy phiên hoặc cookie dữ liệu lên với mảng cực kỳ dài đầy thông tin được sử dụng không phổ biến.
+1; Điểm tốt về sự an toàn của dữ liệu phiên –
@Kai trả lời câu hỏi của tôi cho T, cảm ơn. – Scott
Trong trang đăng nhập của bạn, lưu trữ thông tin người dùng từ cơ sở dữ liệu trong một phiên, trên các trang khác, bạn có thể trực tiếp gọi cho họ
<?php
session_start();
$_SESSION['user'] = $username;
và trên các trang web khác
<?php
session_start();
$_SESSION['user'];
quay trở lại ví dụ stackoverflow, khi bạn đi đến trang hồ sơ của bạn, có rất nhiều dữ liệu ở đó: câu hỏi bạn đã trả lời, câu hỏi bạn đã hỏi vv .. Rõ ràng là bạn sẽ không lưu trữ tất cả điều đó trong một phiên , vậy làm thế nào bạn sẽ lấy tất cả dữ liệu đó từ cơ sở dữ liệu với $ _SESSSION ['USER'] và id? – Scott
Tôi cho rằng bạn có id chính cho người dùng trong cấu trúc sql, chỉ lưu trữ id trong $ _SESSION ['id'] và một số thông tin cơ bản sẽ được sử dụng trên mỗi trang web (như tên người dùng và tên), nếu sau này bạn muốn tìm một số truy vấn khó và cụ thể, chỉ cần lấy id từ $ _SESSION ['id'] và sử dụng nó trong truy vấn sql của bạn –
tôi đang xây dựng một ứng dụng cơ bản và tôi đang cố gắng tìm hiểu cách tôi có thể chuyển thông tin người dùng từ login.php đến index.php
Một cách là để lưu trữ các dữ liệu chia sẻ dữ liệu như phiên PHP: http://www.tizag.com/phpT/phpsessions.php
<?php
session_start(); // start the session
$_SESSION['views'] = 1; // store session data
echo "Pageviews = ". $_SESSION['views']; //retrieve data
Lưu trữ dữ liệu người dùng mà bạn cần cho tất cả các trang. Bạn có thể để lại dữ liệu mở rộng trong DB, do đó bạn không phải truy vấn một tấn dữ liệu lên phía trước (như số liệu thống kê đầy đủ mà bạn thấy trên trang tiểu sử trên SO).
Sau đó, bạn sẽ không phải truy vấn lại dữ liệu người dùng trên mỗi trang. Chỉ cần lấy nó từ dữ liệu phiên.
Tôi có nên xây dựng phương thức xây dựng để truy vấn cơ sở dữ liệu bằng id phiên không? Đó có phải là cách tiếp cận an toàn hoặc hợp lệ không?
Nếu bạn đang sử dụng cùng một tài khoản DB cho mọi thứ, không có điều gì kém an toàn hơn khi truy vấn bảng người dùng. Bạn sẽ không tiếp xúc với bất kỳ rủi ro nào nhiều hơn bất kỳ truy vấn nào khác mà bạn đã thực hiện.
Nếu bạn lo lắng về sự an toàn khi truy cập DB, tôi khuyên bạn nên tìm hiểu về một vấn đề cụ thể: ngăn chặn SQL injection attacks.
- 1. Tôi làm cách nào để đăng nhập một người dùng?
- 2. Làm cách nào để truy cập thông tin đăng nhập Windows từ Java?
- 3. Tôi làm cách nào để có được id người dùng được liên kết với thông tin đăng nhập trên Linux?
- 4. Làm thế nào để tự động đăng nhập người dùng sau khi đăng ký trong django
- 5. file_get_contents từ url chỉ có thể truy cập được sau khi đăng nhập vào trang web
- 6. Làm cách nào để hợp nhất dữ liệu người dùng sau khi đăng nhập?
- 7. Làm cách nào để chuyển hướng trở lại trang truy cập mong muốn của người dùng sau khi người dùng đăng nhập?
- 8. Chuyển hướng sau khi người dùng đã đăng nhập
- 9. Keychain Android cho thông tin đăng nhập của người dùng
- 10. Làm cách nào để ngăn chặn nút quay lại của trình duyệt truy cập thông tin bị hạn chế sau khi người dùng đăng xuất?
- 11. Làm thế nào để xác định người dùng đăng nhập thông qua api Facebook?
- 12. giữ người dùng đăng nhập khi anh ấy truy cập lại cùng một trang?
- 13. Kiểm tra thông tin đăng nhập từ xa và kiểm tra người dùng đã đăng nhập
- 14. Tôi có thể lưu mã thông báo truy cập Facebook và sử dụng sau này không?
- 15. Cách trình bày thông tin đăng nhập để mở tệp?
- 16. pastebinit cách đăng thông tin đăng nhập bằng thông tin đăng nhập?
- 17. Tôi làm cách nào để có được tên đăng nhập mạng của người dùng?
- 18. Làm cách nào để tôi có thể đăng nhập và tìm các truy vấn đắt nhất?
- 19. Cách thiết kế API RESTful để kiểm tra thông tin đăng nhập của người dùng?
- 20. "Nhớ thông tin đăng nhập của tôi" không thành công khi sử dụng nhà cung cấp người dùng tùy chỉnh, thực thể người dùng, v.v.
- 21. Máy chủ SQL cung cấp thông tin đăng nhập (người dùng) db_owner truy cập vào cơ sở dữ liệu
- 22. Không nhận được ảnh của người dùng bằng thông tin đăng nhập google
- 23. Nhập thông tin người dùng Trong Ruby
- 24. Làm thế nào để có được các cửa sổ đăng nhập thông tin đăng nhập từ một ứng dụng Swing?
- 25. Tôi có thể phát hiện khi người dùng truy cập trang bằng nút quay lại không?
- 26. Cách truy cập luồng của người dùng?
- 27. Không thể mở cơ sở dữ liệu được yêu cầu bởi thông tin đăng nhập. Đăng nhập thất bại. Đăng nhập thất bại cho người dùng
- 28. Máy ứng dụng của Google - Cách nhớ thông tin đăng nhập của người dùng?
- 29. Đăng nhập Android trong ứng dụng của tôi bằng thông tin đăng nhập google
- 30. Xác thực người dùng G + ở phía máy chủ, sau khi đăng nhập phía máy khách
Tại sao không lưu trữ thông tin người dùng vào phiên? –