如何使用PHP发布数据并从操作页面获取结果?

时间:2011-12-17 22:52:18

标签: php post curl

我有一个名为ABC的网页。此网页包含一个只有一个输入“ID”的表单。当您输入ID并提交时,它会将您的ID发送到服务器并在另一页上打印您的信息。

我知道表单页面的网址,但不知道结果页面。

我想从我的脚本向该表单发布一个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。

我该怎么做?

2 个答案:

答案 0 :(得分: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 Framework,可以使用this function

答案 1 :(得分:-1)

CSRF

您可以从网站检索数据,但大多数网站都会实施某种令牌验证,换句话说,您无法跨域发布表单数据。