質問

どのようにしたいへpostで要求を異なるphpのページ内でのphpスクリプト?ませていただきました。フロントエンドコンピューターとしてのhtmlページサーバでは、ユーザがクリックボタンのようなバックエンドサーバの処理で送信の上、情報のフロントエンドサーバのユーザーです。ったことはいうまでphpのページのコンピュータでの情報のフロントです。だから、する方法を教えてくださいPOSTリクエストを行うように別のページでphpからphpのページに表示すべき事は何か?

役に立ちましたか?

解決

PHPにPOSTリクエストを実行させる最も簡単な方法は、 cURL 拡張、または単に別のプロセスにシェルアウトします。投稿サンプルは次のとおりです。

// where are we posting to?
$url = 'http://foo.com/script.php';

// what post fields?
$fields = array(
   'field1' => $field1,
   'field2' => $field2,
);

// build the urlencoded data
$postvars = http_build_query($fields);

// open connection
$ch = curl_init();

// set the url, number of POST vars, POST data
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, count($fields));
curl_setopt($ch, CURLOPT_POSTFIELDS, $postvars);

// execute post
$result = curl_exec($ch);

// close connection
curl_close($ch);

また、Zendフレームワークの Zend_Http クラスのセットもチェックしてください。これにより、PHPで直接記述された非常に有能なHTTPクライアントが提供されます(拡張機能は不要です)。

2014 EDIT -まあ、それを書いてからしばらく経ちました。最近では、 Guzzle を確認する価値があります。これもcurl拡張機能の有無にかかわらず動作します。

他のヒント

PHPインストールにCURL拡張があると仮定すると、おそらく最も簡単な方法です(必要に応じて最も完全な方法です)。

サンプルスニペット:

//set POST variables
$url = 'http://domain.com/get-post.php';
$fields = array(
                      'lname'=>urlencode($last_name),
                      'fname'=>urlencode($first_name),
                      'email'=>urlencode($email)
               );

//url-ify the data for the POST
foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
rtrim($fields_string,'&');

//open connection
$ch = curl_init();

//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_POST, count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);

//execute post
$result = curl_exec($ch);

//close connection
curl_close($ch);

クレジットは http://php.dzone.comに移動します。 また、適切なページにアクセスすることを忘れないでくださいPHPマニュアル

PHPの処理については、 cURL をご覧ください。バックエンドでページを呼び出し、そこからデータを取得できます。基本的には次のようなことをします:

$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_URL,$fetch_url);
curl_setopt ($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt ($ch,CURLOPT_USERAGENT, $user_agent;
curl_setopt ($ch,CURLOPT_CONNECTTIMEOUT,60);
$response = curl_exec ( $ch );
curl_close($ch);

PHP HTTP拡張機能もご覧ください。

  1. CURLを使用するのが最も簡単だと言う他のユーザーのように。

  2. curlを使用できない場合は、 http://netevil.org/blog/2006/ nov / http-post-from-php-without-curl

  3. それが不可能な場合は、自分でソケットを書くことができます http://petewarden.typepad.com/searchbrowser/ 2008/06 / how-to-post-an.html

利用の方もカール、CURLOPT_POSTオプションとしてboolean値であり、実際には必要なしに設定しても構いませんの数分野です。
設定CURLOPT_POSTをTRUEにつ任意の整数を除くゼロ)だと思いますかカールへのエンコードのデータとしてapplication/x-www-form-urlencodedが、私はベットがこんなに厳密に必要な時だけ通urlencoded文字列としてCURLOPT_POSTFIELDS、カールすると、既にお伝え、エンコードにより値の型(string vs配列をこのオプションを設定します。

また、PHP5の使用が可能でhttp_build_query機能をPHP urlencodeの分野の配列は、このように:

curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($fields));

Solution is in target = <!> quot; _blank <!> quot;このように:

http://www.ozzu。 com / website-design-forum / multiple-form-submit-actions-t25024.html

次のようにフォームを編集します:

<form method="post" action="../booking/step1.php" onsubmit="doubleSubmit(this)">

そしてこのスクリプトを使用します:

    <script type="text/javascript">
<!--
function doubleSubmit(f)
{
  // submit to action in form
  f.submit();
  // set second action and submit
  f.target="_blank";
  f.action="../booking/vytvor.php";
  f.submit();
  return false;
}
//-->
</script>

理想的ではありませんが、cURLオプションでうまくいかない場合は、shell_exec()を使用してみてください。

CURLメソッドは非常に人気があるため、使用するのが良いです。初心者が理解できるため、追加のコメントを付けてこれらのコードをさらに説明することもできます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top