2011-12-17 48 views
2

我有一個名爲ABC的網頁。這個網頁包含一個只有一個輸入「ID」的表單。當您鍵入您的ID並提交時,它會將您的ID發送到服務器並在另一頁上打印您的信息。如何發佈數據並從PHP的操作頁面獲取結果?

我知道表單頁的網址,但不知道結果頁。

我想從我的腳本中發佈一個ID到該表單,並將結果頁面放入一個變量中。

到目前爲止的代碼,我試圖:

function getUrl($url, $method='', $vars=''){ 

    $ch = curl_init(); 
    if ($method == 'post') { 
     $str = ""; 
     foreach($vars as $var => $ele){ 
      $str .= $var; 
      $str .= "="; 
      $str .= $ele; 
      $str .= "&"; 
     } 
     curl_setopt($ch, CURLOPT_POST, 1); 
     curl_setopt($ch, CURLOPT_POSTFIELDS, $str); 
    } 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
    curl_setopt($ch, CURLOPT_COOKIEJAR, 'asd.txt'); 
    curl_setopt($ch, CURLOPT_COOKIEFILE, 'asd.txt'); 
    curl_setopt($ch, CURLOPT_TIMEOUT, 50000); 
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 50000); 

    $buffer = curl_exec($ch); 
    curl_close($ch); 
    unset($ch); 
    return $buffer; 
} 

$loginUrl = 'http://app2.sgk.gov.tr/AylikHesap/servlet/'; 
$loginFields = array('mernisno'=>'xxx'); 
$remotePageUrl = 'http://app2.sgk.gov.tr/AylikHesap/servlet/com.sgk.aylikhesap.servlet.EventMultiplexer'; 

$login = getUrl($loginUrl, 'post', $loginFields); 

$remotePage = getUrl($remotePageUrl); 

echo $remotePage; 

應該帶來的結果。 xxx是我正在談論的ID。

我該怎麼做?

+1

聽起來像是一個捲曲的工作 – 2011-12-17 23:07:24

+0

我認爲是這樣,但我希望... – gzg 2011-12-17 23:43:51

+1

如果你有你嘗試過的失敗代碼,然後發佈並詢問,它比你如何框定原始問題更有幫助。 – 2011-12-17 23:54:54

回答

-1

CSRF

您可以從網站中檢索數據,但大多數網站的實施某種形式的令牌驗證的,所以換句話說,你不能跨域發佈表單數據。

+0

也許我的理解不夠好,你是說通過不同的域發佈數據到表單是不可能的嗎? – gzg 2011-12-17 23:07:44

+0

正確,閱讀wiki。 除非有問題的網站有公共API。 – Philip 2011-12-17 23:14:53

+0

但我之前做過。這似乎是這個網頁抵制我。 – gzg 2011-12-17 23:19:33

1

您可以使用Zend_Http_Client這個

$client = new Zend_Http_Client(); 
$client->setUri('http://example.com/login.php'); 
$client->setParameterPost('ID', 1234); 
$response = $client->request('POST'); 
$result = $response->getBody(); 

如果你不想使用Zend框架以任何理由,你可以使用this function

+0

這是否需要Zend框架使用Zend_Http_Client類?我可以讓它從源代碼手動使用嗎? – gzg 2011-12-17 23:06:15

+0

編輯我的答案。 – Alex 2011-12-17 23:11:06

+0

謝謝,但它不適合我的情況。我想我在某個地方弄錯了。你的解決方案返回200,這很好,但它不會爲我提供結果頁面。它只是打印表單頁面。 – gzg 2011-12-17 23:21:16

相關問題