Как я могу опубликовать данные и получить результаты со страницы действий с помощью PHP? - PullRequest
2 голосов
/ 18 декабря 2011

У меня есть веб-страница под названием ABC.Эта веб-страница содержит форму с одним входом, «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;

Это должно принести результаты.ххх - это идентификатор, о котором я говорю.

Как мне это сделать?

Ответы [ 2 ]

1 голос
/ 18 декабря 2011

Вы можете использовать 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 по любой причине, вы можете использовать эту функцию .

0 голосов
/ 18 декабря 2011

CSRF

Вы можете извлекать данные с сайта, но большинство сайтов используют своего рода проверку токенов, иными словами, вы не можете публиковать данные форм по доменам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...