2012-09-05 58 views
0

我希望在頁面上有一個表單,在提交後將該人員發送到一個感謝頁面,但我想從表單發送數據到另一個.php文件在遠程服務器上。我已經使用該操作將信息作爲帖子直接發送到遠程服務器,並且它工作得很好,但爲了安全起見,我不希望在任何代碼中看到遠程位置。我正在處理的解決方案是在提交之後,表單操作會將您發送到.php文件,該文件將通過cURL將發佈信息發送到遠程服務器。這是哪裏下山。我不想使用cURL,只是我讀到的唯一東西聽起來像可以工作。所以要回顧一下這是否令人困惑;個人點擊提交,他們去一個.php說「你是一個美好的人」,但它也發送郵件中的信息到遠程服務器,而只顯示在PHP中的遠程位置,所以它是不可見的代碼。都到這個頁面重定向到一個頁面併發送信息到另一個

<form action="landing.php" method="post"> 
Client:<input name="client" type="text" size="20" maxlength="30"> 
    <br /> 
Test1:<input name="test1" type="text" size="20" maxlength="30"> 
    <br /> 
Test2:<input name="test2" type="text" size="20" maxlength="30"> 
    <br /> 
<input type="submit" name="submit" value="Submit" /> 
</form> 

有它的形式我的HTML

<?php 
$ch = curl_init(); 
$data = array('client' => 'Foo', 'test1' => '123', 'test2' => '987'); 
curl_setopt($ch, CURLOPT_URL, 'http://MyServer/test.php'); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 
curl_exec($ch); 
?> 
Thank You etc. 

而且它不工作...我是新來的捲曲,使對於我想要做的事情可能會非常糟糕。我的主要目的是隱藏遙控器的位置。

我在正確的軌道上嗎? 這可能嗎?

+0

有啓用捲曲???????????????? – shail

+0

你得到的錯誤是什麼?捲曲安裝。? – ravi404

+0

我檢查了我的錯誤日誌,今天我什麼都沒有。我在Bluehost上,他們說已啓用cURL。 – Milksnake12

回答

0

檢查捲曲是否啓用或不

發佈後,試圖抓住從捲曲

<?php 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/path/to/form"); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_POST, true); 

$data = array(
    'foo' => 'foo foo foo', 
    'bar' => 'bar bar bar', 
    'baz' => 'baz baz baz' 
); 

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

?> 
+0

我在一臺bluehost服務器上測試了這個功能,他們說它們是啓用了cURL的。爲了測試我也只發送捲曲在同一臺服務器上的本地文件只是爲了測試它,所以我用「curl_setopt($ CH,CURLOPT_URL,‘form.php的’);」。你還提到試圖抓住cURL的輸出,我該怎麼做? – Milksnake12

+0

$ info = curl_getinfo($ ch); – shail

+0

檢查服務器日誌還,你可能有一些有用的 – shail

0

輸出,我認爲還有一個替代方案: -

  1. 使用會將會話數據存儲起來。
  2. 然後重定向到頁面。

希望這些信息對您有所幫助。

或者還有一個解決方案,你可以使用下面的代碼重定向到新的一頁:

<?php 
    header("Status: 301 Moved Permanently"); 
    header("Location:http://MyServer/test.php?". $_SERVER['QUERY_STRING']); 
    exit; 
?> 

感謝和問候 普什卡

0

先通過curl的。請參閱此link發佈數據。 正如你所說「我的主要事情是隱藏遙控器的位置」,你可以在這種情況下使用數據庫。將您的遠程位置保存在一個表中,並隨時檢索它。

試試這個來解決你當前的問題。

<?php 
//set POST variables 
$url = 'http://MyServer/test.php'; 
$data = array('client' => 'Foo', 'test1' => '123', 'test2' => '987'); 

//url-ify the data for the POST 
foreach($data 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($data)); 
curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string); 

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

//close connection 
curl_close($ch); 
?> 
0

我猜你需要POSTFIELDS因爲這樣

$data = 'client=Foo&test1=123&test2=987' 

一個字符串來獲取返回的數據添加

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
$returnText = curl_exec($ch); 
$data= curl_getinfo($ch); 

,如果你想使用它作爲一個陣列,請閱讀this

完整數據在HTTP「POST」操作中發佈。要發佈文件, 需要在文件名前添加@並使用完整路徑。文件類型可以是 通過以下與在 格式的類型的文件名明確指定「;類型= mime類型」。此參數可以作爲 urlencoded字符串傳遞,如'para1 = val1 & para2 = val2 & ...'或作爲數組與 字段名稱作爲鍵和字段數據作爲值。如果value是一個數組,則 的Content-Type標題將被設置爲multipart/form-data。從PHP 5.2.0開始,如果使用@前綴將文件傳遞給此選項,則值必須是數組。