2009-01-20 34 views
5

Vâng, ngay bây giờ tôi có một trang (page2.php) và ở trên cùng nó thực hiện kiểm tra xác nhận hợp lệ và nếu có lỗi nào đó bị trả về trang page1.php. Vấn đề là page1.php được tải bởi một bài viết có nghĩa là nó là kết quả cuối cùng của một biểu mẫu. Điều này có nghĩa là tất cả dữ liệu bài tôi đã có trên page1.php bị mất.Có thể đăng dữ liệu trong chuyển hướng PHP?

Vì vậy, đây là mã của tôi:

if ($validation_fails) 
{ 
    header('Location:page1.php'); 
} 
+0

http://stackoverflow.com/questions/311242/php-open-another-webpage-with-post-data –

+0

Bạn có thể lấy dữ liệu từ $ _POST và sau đó chuyển nó sang trang tiếp theo dưới dạng POST của chính nó . – Peter

Trả lời

5

Bạn có thể gửi dữ liệu trở lại với cURL hoặc tái cấu trúc để thực hiện xác nhận ở đầu page1.php và nếu nó không thất bại, hãy để page2.php. Nếu bạn đang thực hiện một số loại biểu mẫu nhiều bước, bạn có thể lưu tất cả dữ liệu trong một phiên và điền vào các trường nếu có dữ liệu phù hợp trong phiên. Tuy nhiên, không chắc chắn liệu điều đó có áp dụng hay không.

2

Bạn không thể chỉ bao gồm tập lệnh xác thực qua include hoặc require thay vì chuyển hướng đến nó?

3

Bạn có thể cấu trúc lại logic. Việc xác nhận sẽ xảy ra trên page1.php và nếu nó không thành công, việc chuyển hướng sẽ không xảy ra. Nếu thành công, bạn sẽ được chuyển hướng.

Nếu bạn lo ngại về sự an toàn (mọi người chỉ tới trang 2), bạn có thể đặt biến phiên được kiểm tra trên trang 2 và được đặt trên trang1.

1

Trên page2.php Bạn có thể lưu trữ nội dung của bài đăng vào biến $ _SESSION nếu xác thực không thành công.

Trên page1.php bạn chỉ cần bao gồm phiên bản dữ liệu đã được lưu trữ/mã hóa đúng cách mà bạn đã lưu trong phiên làm một phần của biểu mẫu. Bạn cũng có thể sử dụng điều này để cập nhật biểu mẫu để rõ ràng người dùng phần nào đã thất bại trong quá trình xác thực.

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