1

だから私はこの論理に頭を悩ませようとしています。これは、フォーム処理スクリプト上にあるコードです。私がやりたいのは、フォームデータをこれらのURLの1つにランダムに送信することです。私はswitchcaseロジックを使用するために読んでいましたが、以下に示すコードを使用すると、フォームデータが3つのURLすべてに送信されます。そのうちの1つだけに送信する方法はありますか?

function post_to_url($url, $data) {
$fields = '';
foreach($data as $key => $value) { 
  $fields .= $key . '=' . $value . '&'; 
}
rtrim($fields, '&');

$post = curl_init();

curl_setopt($post, CURLOPT_URL, $url);
curl_setopt($post, CURLOPT_POST, 1);
curl_setopt($post, CURLOPT_POSTFIELDS, $fields);


$result = curl_exec($post);

curl_close($post);
}



return $result;

$x = rand(1,3);

switch ($x) {
    case 1:
        post_to_url("http://examplesite1.com/cgi-bin/maxuseradmin.cgi", $data2);
        break;

    case 2:
        post_to_url("http://examplesite2?fid=6646588e54", $data3);
        break;

    case 3:
        post_to_url("http://examplesite1?fid=2fb44e3888", $data4);
        break;
    }

$data変数は配列です-助けてくれてありがとう

4

5 に答える 5

3

ここでの問題は、switchステートメントが発生する前に関数を呼び出していることです。このコードは、switchステートメント内でのみ関数を呼び出すため、機能するはずです。

$x = rand(1,3);

switch ($x) {
    case 1:
        post_to_url("http://examplesite1.com/cgi-bin/maxuseradmin.cgi", $data2);
        break;

    case 2:
        post_to_url("http://examplesite2?fid=6646588e54", $data3);
        break;

    case 3:
        post_to_url("http://examplesite1?fid=2fb44e3888", $data4);
        break;
}
于 2012-08-01T18:17:40.397 に答える
1

3ページすべてに投稿し、返される値を$ ar1$ar2と$ar3に設定します。

オプションを配列に格納してから、1回呼び出しますpost_to_url()

$urls = array(
    array("http://examplesite1.com/cgi-bin/maxuseradmin.cgi", $data2),
    array("http://examplesite2?fid=6646588e54", $data3),
    array("http://examplesite1?fid=2fb44e3888", $data4)
);

$x = rand(0,2);
post_to_url ($urls[$x][0], $urls[$x][1]);
于 2012-08-01T18:18:43.397 に答える
0

post_to_url最初の3行で、関数を呼び出します

コードを次のように変更します

$urls = array(
   "http://examplesite1.com/cgi-bin/maxuseradmin.cgi",
   "http://examplesite2?fid=6646588e54",
   "http://examplesite1?fid=2fb44e3888"
);

# don't know what's in $data* but just to give you an idea
$data = array(
    $data2,
    $data3,
    $data4
);
$x = rand(0,2);
post_to_url($urls[x], $data[x]);
于 2012-08-01T18:18:16.183 に答える
0

関数post_to_urlの呼び出しは、switchcaseステートメント内にある必要があります。3つすべてに投稿する理由は、caseを切り替える前でもこの関数を3回呼び出しているためです。

于 2012-08-01T18:18:43.307 に答える
0

実際には、最初の3行でpost_to_url関数を3回実行しています。あなたは次のようなことをしたいと思うでしょう:

$x = rand(1,3);

switch ($x)
{
case 1:
post_to_url("http://examplesite1.com/cgi-bin/maxuseradmin.cgi", $data2);
break;

case 2:
post_to_url("http://examplesite2?fid=6646588e54", $data3);
break;

case 3:
post_to_url("http://examplesite1?fid=2fb44e3888", $data4);
break;
}
于 2012-08-01T18:19:38.660 に答える