0

次のコードを使用して、cURL を使用して POST 要求を送信しています。これは完全に機能しています。唯一の問題は、アドレス バーの場所が更新されないことです。

このリクエストを送信する Web ページは www.somedomain.com/merge.php ですが、投稿が実行された後も、アドレス バーには www.somedomain.com/preview.php ではなく www.somedomain.com/merge.php が表示されます。

curl_setopt($c, CURLOPT_FOLLOWLOCATION, 1); を使用してみました。運がない。

$c = curl_init();
curl_setopt($c, CURLOPT_URL, 'www.somedomain.com/preview.php');
curl_setopt($c, CURLOPT_POST, true);
curl_setopt($c, CURLOPT_POSTFIELDS, 'landscape=true');
curl_exec ($c);
curl_close ($c); 

ありがとうございました

4

5 に答える 5

3

あなたは何が起こっているのか誤解しています。関係者は次の 3 つです。

client (browser)  <---->   your server  <---->   somedomain.com

クライアントは HTTP リクエストをサーバーに送信し、サーバーは HTTP リクエストを somedomain.com に送信します。サーバーは応答を受け取ります。クライアントはそれとは何の関係もありません。クライアントをリダイレクトする場合は、サーバーからクライアントに適切な HTTP 応答を発行して、別の場所にリダイレクトするように指示する必要があります。クライアントは somedomain.com ではなく、サーバーと通信しているためです。あなたのサーバーと somedomain.com の間で何が起こっていようとも、それは関係ありません。

クライアントが POST リクエストを somedomain.com に直接送信するようにする場合は、somedomain.com に POST するフォームを作成するか、Javascript を使用して同等のものをトリガーする必要があります。

于 2012-11-26T13:50:40.560 に答える
1

REQUEST はブラウザー内で開始されたのではなく、PHP から開始されたため、cURL を使用してこれを行うことはできません。

ブラウザに URL を更新させたい場合は、現在のページ内から FORM を投稿することを検討する必要があります。

于 2012-11-26T13:48:46.227 に答える
1

curl を使用してリクエストを行うと、プログラムで URL にアクセスすることになり、これはサーバー側でのみ発生します。

これにより、アドレス バーの URL が変更されることはありません。

新しい URL にリダイレクトする場合は、

header('redirect', 'http://newurl.com');
于 2012-11-26T13:49:20.970 に答える
0

それは不可能。

これは、 PHP Post & Redirect with cURL Same As HTML Formでの同じ質問です。

その質問はクローズされましたが、有効な回答を読んで問題を明確にすることができます。

于 2014-01-09T21:40:51.313 に答える
0

不可能だよ。cURL を使用してサーバーからリクエストを行います。ただし、クライアントで URL を変更できます。

使用できます

Header("Location:http://www.somedomain.com/preview.php") curl_close($c)の後;

しかし、これは正しい解決策ではないと思います。

于 2012-11-26T13:51:01.670 に答える