2012-03-30 9 views
0

Ich mache eine automatische Anmeldung in einem Mitgliedsbereich mit curl und es ist erfolgreich, aber nach dem Login möchte ich ein Formular im Mitgliederbereich, aber ich weiß nicht, wie das geht können Sie mir bitte, meine aktuellen Code helfen, wie ...curl login und posten erneut im Mitgliederbereich

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

$redirect = '/reports/marks-checker'; 
$email = '[email protected]'; 
$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); 

obigen Code druckt folgt (Echo) Mitgliederbereich und Form (unten angegeben), die i abfragen möchte ...

<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> 

Ich möchte Daten in dieses Formular posten und Ergebnisse zurück erhalten, damit ich die Daten mit Regex greifen konnte. Vielen Dank.

Antwort

1

Sie müssen entweder DOM-Funktionen oder reguläre Ausdrücke oder vorherige Kenntnis der Form verwenden (was auch immer in Ihrer Situation anwendbar ist) ein Array der Formularvariablen zu erstellen und die Werte, die Sie wollen, dass sie zuweisen:

$form_vars = array(); 

mit dem Namen/Wert-Paare IDS/F oder H ist, q/some Text, SortBy/0 oder 1.

$form_vars[$var_name] = $value; 

zB

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

dann die http_build_query Funktion benutzen, um Ihre Abfrage zu erstellen:

$encoded_form_vars = http_build_query($form_vars); 

Dann so etwas wie dies versuchen:

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); 
    } 

mit so etwas wie dies genannt:

$result = postForm($url, $encoded_form_vars); 
Verwandte Themen