2012-05-09 30 views
11

Tôi chắc chắn mọi người đều biết hành vi đó. Bạn điền vào một mẫu trên web, và bạn gửi nó. Sau khi gửi, bạn nhận ra rằng bạn đã điền vào một số dữ liệu sai. Vì vậy, bạn nhấp vào nút quay lại trình duyệt. Sau đó, đôi khi biểu mẫu vẫn có dữ liệu bạn đã nhập (những gì bạn đang hy vọng trong tình huống này) và đôi khi không.Tại sao biểu mẫu HTML đôi khi bị xóa khi nhấp vào nút quay lại trình duyệt

Tôi không thể tìm thấy bất kỳ kết nối nào khi nó bị xóa và khi nào không.

Một số câu trả lời tôi tìm thấy trên internet/stackoverflow:

  • trên các kết nối https, hình thức luôn xóa
  • khi sử dụng các trang web động với các phiên, hình thức luôn xóa

Nhưng cả hai của họ chắc chắn là sai. Tôi đã thấy các trang web (giống như của riêng tôi) giữ biểu mẫu dữ liệu sau khi trình duyệt quay lại đang sử dụng https đang sử dụng các phiên.

Vì vậy, vui lòng: bất kỳ ai cũng có thể giải thích cho tôi cách trình duyệt xử lý nội dung này không?

Nhân tiện: công việc của tôi là đảm bảo rằng dữ liệu biểu mẫu là không bị xóa.

Trả lời

6

Tôi không thể cung cấp câu trả lời cuối cùng cho tất cả các trường hợp.

Là một nhà phát triển web, đây là quy tắc tôi thường làm theo cho các trang web tôi phát triển, để hoàn thành mục tiêu bảo không cho phép người sử dụng bị mất dữ liệu:

  • Disable tất cả các bộ nhớ đệm (thông qua HTTP header) trên trang bạn muốn giữ lại.
  • Ghi lại tất cả dữ liệu vào phiên (hoặc một số lưu trữ tạm thời khác) khi biểu mẫu được gửi.
  • Nếu người dùng điều hướng ngược, trình duyệt sẽ yêu cầu phiên bản mới của trang (vì bạn đặt nó thành không bao giờ có bộ nhớ cache).
  • Trang có logic để xem phiên/cơ sở dữ liệu/ở bất kỳ đâu và phục hồi lại tất cả các trường dựa trên trạng thái đầu vào cuối cùng. Nếu có đầu vào động trên trang, bạn sẽ có đủ dữ liệu để tạo lại chúng.
  • Khi quá trình kết thúc, sử dụng mẫu POST/Redirect/GET để xóa dữ liệu phiên và làm cho người dùng khó quay lại trang gốc.

Một số câu trả lời tôi tìm thấy trên internet/stackoverflow:
1. trên các kết nối https, hình thức luôn xóa
2. khi sử dụng các trang web động với các phiên, hình thức luôn xóa

Tôi tin rằng số 1 thay đổi tùy theo cài đặt/cảnh báo trình duyệt/bảo mật.

Giả định # 2 chắc chắn không đúng trong mọi trường hợp (mẫu tôi vừa mô tả đòn bẩy biểu mẫu động và phiên).

+0

Cảm ơn câu trả lời của bạn. Tất nhiên, bạn hoàn toàn đúng với cách làm của bạn. Nhưng đây là khá nhiều công việc đôi khi (đặc biệt là nếu bạn cần phải thêm hành vi này sau đó). Cuộc sống sẽ dễ dàng hơn nhiều nếu chỉ trình duyệt có thể thực hiện công việc. Đây là nơi câu hỏi của tôi nhắm đến. Có cách nào để trình duyệt thực hiện công việc không !? – Gerwald

2

Vấn đề về trình duyệt của nó. Trình duyệt hoạt động khác nhau khi nút quay lại được nhấp. Câu hỏi này được hỏi trước đây tại đây Losing form data when clicking the back button on browser

+0

okay, khi nào là sự cố trình duyệt: trình duyệt nào hoạt động như thế nào? ví dụ. Safari di động? Và nếu có, làm cách nào để trình duyệt hoạt động như tôi muốn? (giữ dữ liệu) – Gerwald

0

Tôi thấy thật buồn cười khi liên kết bạn cung cấp được hỏi trước câu hỏi này nhưng câu trả lời được trả lời bằng câu hỏi này. Ồ và không có câu trả lời nào được chấp nhận hoặc là .....

+0

Về câu trả lời _no được chấp nhận_: Câu trả lời của Tim rất tuyệt, nhưng - như anh ta cũng đã đề cập, nó chỉ là một giả định, không phải là câu trả lời dứt khoát. – Gerwald

Các vấn đề liên quan