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

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á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ăn

Trong 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ướng

Trong 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 đi

Nế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

  1. Xử lý biểu mẫu gửi của người dùng
  2. Đưa người dùng đến một trang khác có “biểu mẫu vô hình”. “Biểu mẫu” này phải được tạo bằng cách sử dụng các trường ẩn. Các trường phải chứa dữ liệu từ biểu mẫu mà họ đã gửi trước đó
  3. Tự động gửi “biểu mẫu ẩn” bằng JavaScript. Điều đó hoặc bạn có thể nhắc người dùng gửi lại bằng cách yêu cầu họ xác nhận thông tin chi tiết của họ

"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.