我怎么循环$ _POST

时间:2011-06-23 10:01:59

标签: php mysql forms

我当前的主机不允许远程mysql访问,所以我需要通过让server1上的script1与server2上的script2进行通信来解决它。我试图将后期数据发送到script2,然后脚本2获取该数据并将其放入mysql。为了使我的问题变得简单,我将代码删除了:

SCRIPT1

for ( $counter = $counternumbernao; $counter <= $amountofcomments; $counter += 1) 
{
echo'
<form action="http://server2.x.com/form-receive.php" method="post">
<INPUT TYPE=HIDDEN NAME="comment_content" value=$comment_content>
<INPUT TYPE=HIDDEN NAME="comment_date" value=$comment_date">
<input type="submit" />
</form>
';
}

如何更改此代码,以便每次循环发生时它会自动将$ _POST数据发送到script2,然后将其放入mysql?我认为没有必要包含script2,因为它对这个问题并不重要。

5 个答案:

答案 0 :(得分:3)

为什么不使用 cURL 将FORM数据发送到server2。它允许您发送HTTP请求。试试下面的剧本:

$url = "http://server2.x.com/form-receive.php";
$postvars = "comment_content=$comment_content&comment_date=$comment_date";

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST ,1);
curl_setopt($ch, CURLOPT_POSTFIELDS ,$postvars);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION ,1); 
curl_setopt($ch, CURLOPT_HEADER ,0); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER ,1);  
$data = curl_exec($ch);

答案 1 :(得分:2)

要在没有最终用户意识到此行为的情况下自动执行此操作,最好的方法是使用CURL(http://php.net/manual/en/book.curl.php)。

以下是它的外观示例:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://server2.x.com/form-receive.php");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, true);

$data = array(
    'foo' => 'bar',
    // Put data from $_POST here
);

curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$output = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);

答案 2 :(得分:1)

请记住,简单地回显表单永远不会导致表单数据发布到某个服务器。 无论您从PHP代码回复什么,都只会发送到请求php页面的Web浏览器(或任何用户代理)。

我投票给出了建议cURL的答案。

当你在Jack Murdoch的例子中使用cURL时,cURL命令本身作为HTTP用户代理工作,并将POST请求发送到http://server2.x.com/form-receive.php. 所以在form-receive.php中你只需要编写一些普通的php程序来从$ _POST数组读取数据并读/写数据库。 这样,您实际上将在server2上构建一个Web服务。

答案 3 :(得分:-1)

这些方面的东西:

echo '<form action="http://server2.x.com/form-receive.php" method="post">';
for ( $counter = $counternumbernao; $counter <= $amountofcomments; $counter += 1) 
{
    echo'
    <INPUT TYPE=HIDDEN NAME="comment_content[]" value=$comment_content>
    <INPUT TYPE=HIDDEN NAME="comment_date[]" value=$comment_date">
    <input type="submit" />
    ';
}
echo '</form>';

然后,表单接收脚本将在$ _POST [&#39; comment_content&#39;]和$ _POST [&#39; comment_date&#39;]中接收数据数组。

答案 4 :(得分:-1)

尝试使用JQuery和post()方法(http://api.jquery.com/jQuery.post/) 然后只生成一个包含所有记录的JS数组,然后在循环中运行并享受ENJOY! 可能这个解决方案只比PHP中的循环/刷新更快。