同じ値を1つ以上のページにPOSTする場合 - PHPプロ!Q&A掲示板

99

  • 100P

同じ値を1つ以上のページにPOSTする場合

質問日時 / 2006年7月20日 16:39    回答数 / 7件

Questioner:  clover  このエントリーをはてなブックマークに追加 

キーワード / form    action   

同じ値を1つ以上のページにPOSTしたい場合、formのactionにリンク先を複数書くことは可能でしょうか?

できない場合は、何か良い方法はありますでしょうか?

宜しくお願いします。

この質問への意見の募集は締め切られ、ポイントは既に配分されました。
意見を投稿することはできますが、ポイントを受け取ることはできません。



ツリー一覧

┣A01galluがると申します。 JavaScriptなどいくつかの例外を除
┃┣A01-1cloverご回答ありがとうございます。 また、ご返答が遅くな
┃┗A01-2ajhc8801javascriptで試してみようと思いしてみたのですが、
┣A02shizkどうしても複数のページへPOSTデータを送信したいなら
┃┗A02-1cloverご回答ありがとうございます。 こういう方法を思い
┗A03shizk上のコード、最後の方を間違えました。。 $req = n
 ┗A03-1clover上のコード試してみたいと思います。 ありがとうご

回答一覧

並び替え:

A01 満足
answerergallu [7月21日 14:04]

がると申します。
JavaScriptなどいくつかの例外を除いて、基本的にPOSTで2箇所以上にデータを投げることは無理です。
ですので。
>同じ値を1つ以上のページにPOSTしたい場合
1つなら出来ますが、2つ以上はできないです。
# こういうときは「2つ以上」または「1つを超える」と書かれるとよろしいかと思います。

具体的にどんなことをなさりたいのかを書いていただければ、もう少し詳しいフォローが出来るかと思うのですが。

この意見に回答する

ツリーへ TOPへ

A01-1
replyerclover [7月25日 11:29]

ご回答ありがとうございます。
また、ご返答が遅くなりましてすみませんでした。

下のshizkさんが書いてくださった方法を試してみたいと思います。

どうもありがとうございました。

この意見に回答する

ツリーへ TOPへ

A01-2
replyerajhc8801 [9月26日 09:39]

javascriptで試してみようと思いしてみたのですが、
その方法が解りませんでした。javascriptもあまり理解していないもので・・・

フォームからSUBMITを送信した際に値(hidden)の値を
同時に送信したいのですが・・・うまくいきません。
どういうふうに書いたら良いのでしょうか?
また、画像の値の持たせかたも教えていただければ助かります。



<html>
<head>
<title>Sample</title>
<script type="text/javascript"><!--
function jumpURL()
{
location.href = "http://sample/";
}
// --></script>
</head>
<body>

<form>
<input type="hidden" name="date" value="○○○○">
<input type="button" value="送信" onClick="jumpURL()">
</form>
</body>
</html>

この意見に回答する

ツリーへ TOPへ

A02 満足
answerershizk [7月23日 13:01]

どうしても複数のページへPOSTデータを送信したいなら、スクリプトで実行してはどうでしょうか?formのactionに書いたリンク先のスクリプトでPOSTデータを処理し、そこから別のページへPOSTデータを送信します。これはfsockopenを使うことで可能です。ご存知かもしれませんが、コードは簡単に書くと以下のようになります(送信先アドレスが http://www.example.com/recieve.phpであり、送信データは名前がvalで値が$valueであるとします)。


// ソケットを開く
$fp = fsockopen("www.example.com", 80, $errno, $errstr, 30);

// エラー処理
if (!$fp) {
 echo $errno."<br>";
 echo $errstr."<br>";
 exit;
}

// データをPOST用に整える
$data = 'val=' . urlencode($value);

// データをPOST形式で記述する
$post  = "POST http://www.example.com/recieve.php HTTP/1.1\r\n";
$post .= "Host: www.example.com\r\n";
$post .= "Content-Type: application/x-www-form-urlencoded" . "\r\n";
$post .= "Content-Length: " . strlen($data) . "\r\n\r\n";
$post .= $data ."\r\n";

// 送信する
fputs($fp, $post);

// レスポンスを取得
$response = "";
while (!feof($fp)) {
 $response .= fgets($fp, 4096);
}

// ソケットを閉じる
fclose($fp);


といったところでしょうか。直接書いているので少し猥雑な感じになります。ロジックをすっきりとさせたいなら、PEAR::HTTP_Requestを使うと良いと思います。これにはHTTP_Request、Net_Socket、Net_URLの3つのパッケージが必要となりますが、PEARホームページからダウンロードして下さい。コードは以下のようになります。


require_once("HTTP_Request/Request.php");

// ソケットを開き、送信形式を指定し、データを送信する
$req = new $HTTP_REQUEST("http://www.example.com/recieve.php");
$req->setMethod(HTTP_REQUEST_METHOD_POST);
$req->addPostData('val', $value);

// レスポンスを取得する
if (!PEAR::isError($req->sendRequest())) {
 $response = $req->getResponseBody();
}

この意見に回答する

ツリーへ TOPへ

A02-1
replyerclover [7月25日 11:32]

ご回答ありがとうございます。

こういう方法を思いつかなかったので、とても助かりました。
また、fsockopenという関数を知らなかったので勉強になりました。

ご丁寧にどうもありがとうございました。

この意見に回答する

ツリーへ TOPへ

A03 満足
answerershizk [7月24日 00:22]

上のコード、最後の方を間違えました。。

$req = new $HTTP_REQUEST("http://www.example.com/recieve.php");

ではなく、

$req = new HTTP_Request("http://www.example.com/recieve.php");

です。

この意見に回答する

ツリーへ TOPへ

A03-1
replyerclover [7月25日 19:05]

上のコード試してみたいと思います。

ありがとうございました。

この意見に回答する

ツリーへ TOPへ

<<質問一覧へ



Pick Up Q&A

Q
PHPのHTML埋め込み記述について
 このエントリーをはてなブックマークに追加 
A
$_POST["data"] == "男" ? $val = "checked" : $val = "" ; の意味は以下と同じです。 if($_POST["data"] == "男"){ $val = "checked; } e...

>>続きを読む

kende様のご指摘通り、三項演算子を使用する際には、コードの複雑度などを考慮する必要がありますね。書きやすさと共に可読性も追求したいところですね。

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)