所以我试图绕过这个逻辑。这是表单处理脚本上的代码。我想要做的是随机将表单数据发送到这些网址之一。我正在阅读使用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变量是数组 - 谢谢你的帮助
答案 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;
}