curl логин и запись снова в личном кабинете - PullRequest
0 голосов
/ 30 марта 2012

Я делаю автоматический вход в личный кабинет с помощью curl, и это успешно, но после входа я хочу опубликовать форму в личном кабинете, но я не знаю, как это сделать. текущий код выглядит следующим образом ...

$main_url = 'https://www.url.com';

$redirect = '/reports/marks-checker';
$email =    'user@gmail.com'; 
$password = 'pass123'; 


$url= $main_url.'/account/login'; 
$cookie="cookie.txt"; 

$postdata = 'redirect='.$redirect.'&EmailAddress='.$email.'&Password='.$password.'&RememberMe=1'; 

$ch = curl_init(); 
curl_setopt ($ch, CURLOPT_URL, $url); 
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, true); 
curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6"); 
curl_setopt ($ch, CURLOPT_TIMEOUT, 60); 
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1); 
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt ($ch, CURLOPT_COOKIEJAR, $cookie); 
curl_setopt ($ch, CURLOPT_REFERER, $url); 

curl_setopt ($ch, CURLOPT_POSTFIELDS, $postdata); 
curl_setopt ($ch, CURLOPT_POST, 1); 
$result = curl_exec ($ch); 
echo $result;

curl_close($ch);

выше кода печатает (эхо) членскую область и форму (приведенную ниже), которые я хочу запросить ...

<form method="POST">
<input type="radio" name="IDS" value="F" checked/>
<input type="radio" name="IDS" value="H"/>
<textarea name="q" cols="80" rows="15" wrap="none" style="width:99%"></textarea>
<select name="SortBy">
    <option value="0">rank</option>
    <option value="1">date</option>
</select>
<input type="submit" name="getmarks" value="Check marks"/>
</form>

Я хочу опубликовать данные в этой форме и получить результаты обратно, чтобы я мог получить данные с помощью регулярных выражений. спасибо.

1 Ответ

1 голос
/ 30 марта 2012

Вам необходимо использовать либо функции DOM, либо регулярные выражения, либо предварительное знание формы (независимо от того, что применимо в вашей ситуации) для создания массива переменных формы и значений, которые вы хотите назначить им:

    $form_vars = array();

с парами имя / значение IDS / F или H, q / некоторый текст, SortBy / 0 или 1.

    $form_vars[$var_name] = $value;

например,

    $form_vars['IDS'] = "H";

Затем используйте функцию http_build_queryчтобы построить ваш запрос:

    $encoded_form_vars = http_build_query($form_vars);

Затем попробуйте что-то вроде этого:

    function postForm($url, $fields, $referer='') {
            curl_setopt($ch, CURLOPT_URL, $url);
            curl_setopt($ch, CURLOPT_HTTPHEADER,array("Expect:"));
            curl_setopt($ch, CURLOPT_URL, $url);
            curl_setopt($ch, CURLOPT_POST, 1);
            curl_setopt($ch, CURLOPT_REFERER, $referer);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
            return curl_exec($ch);
    }

вызывается примерно так:

    $result = postForm($url, $encoded_form_vars);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...