Làm cách nào để chuyển hướng với dữ liệu bài đăng trong PHP?
Trong hơn một lần, tôi đã bắt gặp những nhà phát triển PHP mới làm quen đang tìm cách chuyển hướng người dùng và các biến biểu mẫu đã gửi của họ đến một trang web bên ngoài Show
Thường xuyên hơn không, họ sẽ hỏi liệu bằng cách nào đó họ có thể đính kèm các biến POST vào chuyển hướng tiêu đề không Sau khi điều này không thành công và cuối cùng họ nhận ra rằng cần có một giải pháp khác, họ thường sẽ cố gắng sử dụng thư viện HTTP chẳng hạn như cURL Thật không may, cURL sẽ không giúp được gì trong trường hợp này GiữNếu trang web được đề cập có API, thì bạn chắc chắn nên truy cập vào đó thay vì loay hoay với các chuyển hướng Nếu họ có API, thì bạn sẽ có thể tương tác với API đó bằng cURL Có thể bạn quan tâmCác giải pháp bên dưới dành cho các trang web sẵn sàng chấp nhận dữ liệu POST từ người dùng lần đầu tiên vào trang web của họ. Ví dụ: PayPal và một số thương gia trực tuyến khác Nếu trang web không chính thức chấp nhận các yêu cầu như vậy và bạn đang cố gắng kết hợp tất cả các chức năng này lại với nhau, thì đừng ngạc nhiên khi phát hiện ra rằng ứng dụng của bạn đột nhiên bị hỏng chỉ sau một đêm do trường biểu mẫu đã được đổi tên hoặc họ đã thêm hình ảnh xác thực Nếu trang web hiện yêu cầu hình ảnh xác thực trước khi việc gửi biểu mẫu được chấp nhận, thì bạn sẽ không gặp may. Đó là một “vấn đề” hoàn toàn khác không đề cập ở đây XoănTrong trường hợp này, vấn đề với cURL là yêu cầu được gửi qua máy chủ Nói cách khác, yêu cầu sẽ không đến từ trình duyệt của người dùng Do đó, trình duyệt của người dùng và trang web bên ngoài sẽ hoàn toàn không biết gì về nhau Theo như họ được biết, họ chưa bao giờ gặp nhau trước đây. Điều này là do cURL đang đóng vai trò trung gian giữa người dùng và trang web bên ngoài Nó lấy dữ liệu từ người dùng trước khi chuyển tiếp nó trên. Điều này có nghĩa là nếu bạn chuyển tiếp dữ liệu POST qua cURL, trang web được đề cập sẽ không nhận ra đó là yêu cầu từ người dùng của bạn Đây có thể là một vấn đề lớn nếu người dùng của bạn cần thực hiện thêm các hành động sau khi biểu mẫu được gửi Ví dụ: nếu người dùng cần nhập chi tiết thẻ tín dụng của họ hoặc nhấp vào nút xác nhận, thì việc sử dụng cURL sẽ trở nên rườm rà nhất Nếu trang web dựa trên JavaScript hoặc một số hình thức xử lý phía máy khách khác, thì việc sử dụng cURL thậm chí sẽ trở nên phức tạp hơn vì cURL không thể xử lý JavaScript hoặc tương tác với các plugin của trình duyệt “Tôi không thực sự quan tâm đến việc chuyển hướng người dùng. Tôi chỉ muốn chuyển tiếp dữ liệu POST. ”Nếu bạn đồng ý với việc không chuyển hướng người dùng đến trang web được đề cập, thì yêu cầu cURL một lần có thể là giải pháp hoàn hảo cho bạn Nếu trang web chấp nhận và cung cấp các yêu cầu POST mà không buộc người dùng phải nhảy qua các vòng, thì bạn có thể chuyển tiếp dữ liệu như vậy //The names of the POST variables that we want to send //to the external website. $postVars = array('name', 'email', 'dob'); //An array to hold the data that we'll end up sending. //Empty by default. $postData = array(); //Attemp to find the POST variables that we want to send. foreach($postVars as $name){ if(isset($_POST[$name])){ $postData[$name] = $_POST[$name]; } } //Setup cURL $ch = curl_init(); //The site we'll be sending the POST data to. curl_setopt($ch, CURLOPT_URL, "http://example.com"); //Tell cURL that we want to send a POST request. curl_setopt($ch, CURLOPT_POST, 1); //Attach our POST data. curl_setopt($ch, CURLOPT_POSTFIELDS, $postData); //Tell cURL that we want to receive the response that the site //gives us after it receives our request. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); //Finally, send the request. $response = curl_exec($ch); //Close the cURL session curl_close($ch); //Do whatever you want to do with the output. echo $response; Sau đó, bạn có thể phân tích biến $response và thông báo cho người dùng xem họ có thành công hay không Tôi cần đảm bảo rằng người dùng được chuyển hướngTrong một số trường hợp nhất định, bạn sẽ cần chuyển hướng người dùng đến trang web được đề cập Với những người bán trực tuyến như PayPal, đây là điều bắt buộc vì người dùng sẽ được nhắc nhập chi tiết thanh toán của họ sau khi họ truy cập trang web Nếu bạn không cần xử lý dữ liệu biểu mẫu trước khi gửi, thì chỉ cần thêm URL của trang web bên ngoài vào thuộc tính hành động của biểu mẫu của bạn sẽ thực hiện thủ thuật Lợi ích của việc này là bạn thậm chí không cần chuyển hướng người dùng. Họ chỉ cần gửi biểu mẫu và dữ liệu được chuyển trực tiếp đến trang web đang chờ chấp nhận biểu mẫu đó Tôi cần xử lý dữ liệu biểu mẫu trước khi người dùng rời điNếu bạn cần xử lý dữ liệu biểu mẫu trước khi người dùng rời khỏi trang web của mình, thì bạn cần thực hiện các bước sau
"Hình thức vô hình" có thể trông giống như thế này Vấn đề với mã ở trên là người dùng cần bật JavaScript để mã hoạt động. Để không an toàn, bạn có thể thêm nút gửi có thể nhìn thấy vào biểu mẫu. Một nội dung có nội dung như “Nhấp vào đây nếu trang web mất quá nhiều thời gian để chuyển hướng. ” hoặc “Xác nhận gửi” Làm cách nào để chuyển hướng yêu cầu đăng bài trong PHP?Hiện tại trong PHP, việc chuyển hướng được thực hiện bằng cách sử dụng hàm header() vì đây được coi là phương pháp nhanh nhất để chuyển hướng lưu lượng truy cập từ một . Ưu điểm chính của phương pháp này là nó có thể điều hướng từ vị trí này sang vị trí khác mà người dùng không cần phải nhấp vào liên kết hoặc nút.
Bạn có thể chuyển hướng với một yêu cầu bài viết?để đáp lại yêu cầu POST. Thay vào đó, RFC chỉ đơn giản tuyên bố rằng trình duyệt sẽ cảnh báo người dùng và đưa ra tùy chọn tiếp tục hoặc hủy bỏ mà không đăng lại dữ liệu vào vị trí mới. Trừ khi bạn viết mã máy chủ phức tạp, bạn không thể buộc chuyển hướng POST và giữ nguyên dữ liệu đã đăng .
Làm cách nào để chuyển hướng dữ liệu trong PHP?Để đặt chuyển hướng PHP vĩnh viễn, bạn có thể sử dụng mã trạng thái 301 . Vì mã này biểu thị chuyển hướng vô thời hạn nên trình duyệt sẽ tự động chuyển hướng người dùng bằng URL cũ sang địa chỉ trang mới.
Làm cách nào để chuyển hướng dữ liệu từ trang này sang trang khác trong PHP?Chuyển hướng từ trang này sang trang khác trong PHP thường được thực hiện bằng hai cách sau. Sử dụng hàm tiêu đề trong PHP . Hàm header() là một hàm có sẵn trong PHP được sử dụng để gửi tiêu đề HTTP (Giao thức truyền siêu văn bản) thô tới máy khách. |