2012-05-31 17 views
0

我不知道如何解決發送$ _POST的問題。我想,以填補在example.com

//at example.com 
<form action="foo.php" method="post" > 
<input name="bar1" type="text" /> 
<input name="bar2" type="text" /> 
<input name="bar3" type="text" /> 
<input value="Send" type="submit" /> 
</form> 

一個表格,然後它去foo.php:

<?php //foo.php 
echo 'added: <p>'.$_POST['bar1'].'<br />'.$_POST['bar2'].'<br />'.$_POST['bar3']; 
?> 

,並在同時它也派

$_POST['bar1'], $_POST['bar2'], $_POST['bar3'] 

到exampledomain .com/foobar.php在哪裏可以保存到一個文件 - 這不是一個問題。

我不知道如何一次發送信息到兩個php腳本 - 一個是外部腳本。我想我必須發送它內部foo.php

有種解決方案 - 重定向到example.comdomain.com/foobar.php裏面foo.php但它是不可接受的我的情況 - 我想要做到這一點事先沒有做用戶出口example.com

感謝,並希望你能我已瞭解的問題 - 如果不是隻問評論

編輯:基於皮特·赫伯特Penito的回答是:

<?php //inside foo.php 
$url = 'http://exampledomain.com/foobar.php'; 
$fields_string=''; 
foreach($_POST as $key=>$value) { $fields_string .= $key.'='.$value.'&'; } 
rtrim($fields_string,'&'); 

//open connection 
$ch = curl_init(); 

//set the url, number of POST vars, POST data 
curl_setopt($ch,CURLOPT_URL,$url); 
curl_setopt($ch,CURLOPT_POST,count($_POST)); 
curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string); 

//execute post 
$result = curl_exec($ch); 

//close connection 
curl_close($ch); 

    ?> 

回答

2

我會用捲曲構造POST請求:

<?php 
// these variables would need to be changed to be your variables 
// alternatively you could send the entire post constructed using a foreach 
if(isset($_POST['Name']))  $Name = $_POST['Name']; 
if(isset($_POST['Email'])) $Email = $_POST['Email']; 
if(isset($_POST['Message'])) $Message= htmlentities($_POST['Message']); 

$Curl_Session = curl_init('http://www.site.com/cgi-bin/waiting.php'); 
curl_setopt ($Curl_Session, CURLOPT_POST, 1); 
curl_setopt ($Curl_Session, CURLOPT_POSTFIELDS, "Name=$Name&Email=$Email&Message=$Message"); 
curl_setopt ($Curl_Session, CURLOPT_FOLLOWLOCATION, 1); 
curl_exec ($Curl_Session); 
curl_close ($Curl_Session); 
?> 

從鏈接:

http://www.askapache.com/php/sending-post-form-data-php-curl.html

+0

這種方法將導致第二個Web服務器將POST視爲來自初始Web服務器,而不是用戶 - 可能或可能不需要 – trapper

+0

考慮到問題中未提及源服務器名稱。不過,我明白你的觀點,它不會來自同一個地方;然而,只記錄POST變量似乎並不暗示這個信息很重要。 –

+0

我要檢查這個解決方案 - 謝謝你,我認爲在我的情況下,它應該很好地工作 – andrewpo

1

在你foo.php

<?php 
include 'http://exampledomain.com/foobar.php'; 

注:你需要在你php.ini文件以啓用allow_url_fopen

+1

這是行不通的,第二個PHP文件在另一臺服務器上,因爲他在他的問題寫。 –

+0

@BjörnKaiser是的,我添加了一個說明,應該爲此啓用'allow_url_fopen'。 – flowfree

+0

這是更好;-) –

0

你需要做的POST是用JavaScript AJAX之一。

然後真正的職位,將正常重定向瀏覽器。

http://www.w3schools.com/jquery/ajax_post.asp

$(selector).post(url,data,success(response,status,xhr),dataType) 
+0

您必須防止提交按鈕實際上首先提交,否則ajax請求將無法完成。也就是說,創建一個阻止默認的點擊偵聽器並不難,在完成時發送Ajax請求,然後重定向瀏覽器。 –