使用PHP Switch语句将表单数据发送到随机URL

时间:2012-08-01 18:13:27

标签: php

所以我试图绕过这个逻辑。这是表单处理脚本上的代码。我想要做的是随机将表单数据发送到这些网址之一。我正在阅读使用switch case逻辑,但是当我使用下面看到的代码时,它会将表单数据提交给所有3个URL。有没有办法只发送给其中一个?

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变量是数组 - 谢谢你的帮助

5 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:1)

您要发布到所有3个页面,然后将其返回的值设置为$ ar1 $ ar2和$ ar3。

将您的选项存储在数组中,然后调用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]);

答案 2 :(得分:0)

在前3行中,您调用post_to_url函数

将您的代码更改为

$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]);

答案 3 :(得分:0)

调用函数post_to_url应该在switch case语句中。 它发布到所有3的原因是你在切换案例之前调用了这个函数3次。

答案 4 :(得分:0)

您实际上是在前三行执行了三次post_to_url函数。您可能希望执行以下操作:

$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;
}