RollingCurl mit GET und POST Anfragen in der gleichen Sitzung


Sinalco

Grünschnabel
Ich versuche zuerst einen CSRF-Token aus einer Website mit einer GET Anfrage auszulesen.
Damit sich der Token nicht mehr ändert muss in der gleichen Sitzung die POST Anfrage gesendet werden.

Das habe ich bereits mit dem ganz normalen curl geschafft, nun möchte ich das ganze mit RollingCurl umsetzten.

Folgenden Code verwende ich:

Meine angepasste RollingCurl.php Datei:
Code:
<?php
function RollingCurl($urls){
    $results = array();
    // make sure the rolling window isn't greater than the # of urls
    $rolling_window = 2;
    $rolling_window = (sizeof($urls) < $rolling_window) ? sizeof($urls) : $rolling_window;
    $master = curl_multi_init();

    // add additional curl options_get here
    $options_get = array(
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_CONNECTTIMEOUT => 30,
        CURLOPT_TIMEOUT =>  30,
        CURLOPT_COOKIEJAR => 'cookie.txt'
    );
    // add additional curl options_post here
    $options_post = array(
        CURLOPT_POST => true,
        CURLOPT_POSTFIELDS, $data,
          CURLOPT_COOKIEJAR => 'cookie.txt',
          CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_CONNECTTIMEOUT => 30,
        CURLOPT_TIMEOUT =>  30
    );

    // start the first batch of requests
    for ($i = 0; $i < $rolling_window; $i++) {
      $ch = curl_init();
      $options_get[CURLOPT_URL] = array_pop($urls);
      curl_setopt_array($ch, $options_get);
      curl_multi_add_handle($master, $ch);
    }
    do {
      while (($execrun = curl_multi_exec($master, $running)) == CURLM_CALL_MULTI_PERFORM) {
        ;
      }
      if ($execrun != CURLM_OK) {
        break;
      }
      // a request was just completed -- find out which one
      while ($done = curl_multi_info_read($master)) {
        $info = curl_getinfo($done['handle']);
        $output = curl_multi_getcontent($done['handle']);
        $results[$info['url']] = $output;
        $new_url = array_pop($urls);
        if(isset($new_url)){
          $ch = curl_init();
          $options_get[CURLOPT_URL] = $new_url;
          curl_setopt_array($ch, $options_get);
          curl_multi_add_handle($master, $ch);
        }
        // remove the curl handle that just completed
        curl_multi_remove_handle($master, $done['handle']);
      }
    } while ($running);
    curl_multi_close($master);
    return $results;
  }
  ?>
Und die multi.php Datei die Aufgerufen wird und die zum Testen erstmal die HTML Daten ausgibt:
Code:
<?php
require('RollingCurl1.php');
$html = [];

$urls = array("http://www.google.com/",
              "http://www.facebook.com/",
              "http://www.yahoo.com/",
            );

$html = RollingCurl($urls);

echo $html["http://www.google.com/"];
?>
Mein Ansatz wäre jetzt in der RollingCurl.php zusätzlich noch eine POST Anfrage einzubauen, $options_post ist ja schon drin.
Nach der GET Anfrage kann ich die Variable $data mit Werten füllen (im oberen Code nicht implementiert, das bekomme ich aber selber hin).

Wie bekomme ich die POST Anfrage mit der $options_post umgesetzt?
 

Neue Beiträge