phpで、submitボタンを押さずにpost送信したいと考えております。

目的は、会員登録した際に同時にメルマガASPの購読登録をしてもらうためです。
(規約面の問題はクリアしています)

そこで下記のURLを見つけました。
http://www.phppro.jp/news/228
しかし、よく意味がわかりません。。

$url, $data, $optional_headersそれぞれ具体的に何を書けばよいのでしょうか?

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2009/01/11 15:05:02
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:pahoo No.1

回答回数5960ベストアンサー獲得回数633

ポイント35pt
$url
POST 送信先の URL。FORMタグの action に相当する URL を記述します。
$data
stream_context_create関数の content 要素に渡すパラメータ、すなわち POST 変数の中身を記述します。
$optional_headers
stream_context_create関数の header 要素に渡すパラメータ、たとえば cookie などを記述します。ご質問の要件では null のままでよろしいかと存じます。

content 要素に渡すパラメータについては、http_build_query関数を使って作成します。

たとえば、'http://www.hoge.com/hogehoge.cgi' に対して

$_POST['hoge1'] = 'hoge';

$_POST['hoge2'] = 'hogehoge';

を渡す場合には、下記のように記述します。

$url  = 'http://www.hoge.com/hogehoge.cgi';
$data = http_build_query(array('hoge1' => 'hoge', 'hoge2' => 'hogehoge'));
$res = do_post_request($url, $data, null);
id:freewriter

ありがとうございます!

これで大丈夫・・と思いきや、ASP側で蹴られてしまいました。

直接のアクセスを認めていないようです。

$optional_headersをいじれば解決できますでしょうか?

2009/01/05 03:10:22
id:pahoo No.2

回答回数5960ベストアンサー獲得回数633

ポイント35pt

直接のアクセスを認めていないようです。

$optional_headersをいじれば解決できますでしょうか?

ASPの仕様が分からないと何とも言えませんが、こういうケースでは、セッションを張っていたり、HTTP Referer をチェックしていることが多いですね。そうなると、ご質問の http_build_query 関数だけでは対処できません。


「規約面の問題はクリアしています」とのことなので、ASP管理者にシステム仕様を確認してください。

id:freewriter

それはそうですね。ご丁寧にありがとうございました!

2009/01/05 13:21:14

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません