2011-06-23 17 views
2

私の現在のホストはリモートのmysqlアクセスを許可していないので、server1のscript1とserver2のscript2との通信によって回避する必要があります。投稿データをscript2に送信しようとしていますが、そのデータを受け取り、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> 
'; 
} 

ループが発生するたびに、それが自動的にスクリプト2に$ _POSTデータを送信するようにどのように私は、このコードを変更することができます簡単な私の質問を保つために、私がダウンして、これにコードを剥奪しましたそれはそれをmysqlに入れますか?私はこの問題に重要ではないので、script2を含める必要はないと思った。

+1

私の質問は、なぜWebサービスを開発しないのでしょうか?このようにして、ポイントAからポイントBにデータを送信すると、システム内の穴を開くことができます。 – Kumar

答えて

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); 
+0

ねえ、受信スクリプトはまだ同じに見えますか? – natli

+0

ええと - それはまったく同じです。 –

-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 [ 'COMMENT_CONTENT' 内のデータの配列を受け取ります。ここ

は、それがどのように見えるかの例です]と$ _POST ['comment_date']。

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

jQueryのを使用してみてくださいとポスト()メソッド(http://api.jquery.com/jQuery.post/) そしてちょうど、その後、すべてのレコードでJSの配列を生成ループで実行しENJOY! おそらく、このソリューションは、PHPでのループ/リフレッシュより高速です。

1

フォームをエコーするだけで、フォームデータがサーバーに送信されることはありません。 あなたのPHPコードからのエコーは、PHPページをリクエストしたWebブラウザ(またはユーザエージェント)にのみ送信されます。

私はcURLを提案する回答に投票します。あなたはジャック・マードックの例のようにcURLを使用

は、curlコマンド自体は、HTTPユーザエージェントとして動作し、あなただけのいくつかの通常のPHPプログラムを作成する必要がありますフォームreceive.phpでhttp://server2.x.com/form-receive.php. そうにPOSTリクエストを送信します$ _POST配列のデータを読み込み、データベースに読み書きします。 このようにして、実際にserver2にWebサービスを構築しようとしています。

関連する問題