DasIrrlicht
Grünschnabel
Guten Abend!
Ich versuche mich gerade mit der libCurl und bin auf ein kleines Problem gestoßen. In meinem Programm melde ich mich an einer Website an und lade im Anschluss eine weitere Seite. Diese verwende ich um den Login zu verifizieren. Ist dies gut gegangen lade ich eine dritte Seite und geben diese vorerst nach stdout aus. Da ich mit CURLOPT_WRITEFUNCTION arbeite versuche ich den Speicher vor dem Laden der dritten Seite zu leeren, um keine falschen Daten zu erhalten. Dies funktioniert jedoch nicht, oder zumindest "komisch".
Mit folgendem Code versuche ich es:
Das ist der Aufruf der dritten Seite. Ich hoffe alle wichtigen Informationen sind vorhanden. Hier steht trotz des Zurücksetzens von chunk.memory und chunk.size die Seite auf die ich nach dem Aufruf der Login-Seite weitergeleitet werde. Diese Seite lade ich meines Erachtens nie in den Speicher. Es läuft so ab:
- Aufruf login.php mit Benuztzerdaten
- direkt im Anschluss Abfrage von index.php
- leeren des Speichers
- Abfrage von dosomething.php
- Ausgabe des Speichers
Wichtig ist noch, wenn ich den exakt gleich Code noch einmal ausführe, steht die richtige Seite im Speicher.
Hoffe jemand kann mir erklären was da vor sich geht.
Gruß,
Daniel
Ich versuche mich gerade mit der libCurl und bin auf ein kleines Problem gestoßen. In meinem Programm melde ich mich an einer Website an und lade im Anschluss eine weitere Seite. Diese verwende ich um den Login zu verifizieren. Ist dies gut gegangen lade ich eine dritte Seite und geben diese vorerst nach stdout aus. Da ich mit CURLOPT_WRITEFUNCTION arbeite versuche ich den Speicher vor dem Laden der dritten Seite zu leeren, um keine falschen Daten zu erhalten. Dies funktioniert jedoch nicht, oder zumindest "komisch".

Mit folgendem Code versuche ich es:
C:
struct MemoryStruct{
char *memory;
size_t size;
};
static struct MemoryStruct chunk;
// [...]
if(chunk.memory){
chunk.memory = NULL;
chunk.size = 0;
}
curl_easy_setopt(curl_handle, CURLOPT_COOKIEFILE, "cookies.txt");
curl_easy_setopt(curl_handle, CURLOPT_COOKIEJAR, "cookies.txt");
curl_easy_setopt(curl_handle, CURLOPT_URL, "http://example.com/dosomething.php");
curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, WriteMemoryCallback);
curl_easy_setopt(curl_handle, CURLOPT_WRITEDATA, (void *)&chunk);
curl_easy_setopt(curl_handle, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)");
if(curl_easy_perform(curl_handle) != CURLE_OK) return -1;
if(chunk.memory){
if(!((string)chunk.memory).find(nid)){
cout << "Session lost!" << endl;
}
else {
cout << "Done! Output:" << endl << endl;
cout << chunk.memory << endl << endl;
}
}
Das ist der Aufruf der dritten Seite. Ich hoffe alle wichtigen Informationen sind vorhanden. Hier steht trotz des Zurücksetzens von chunk.memory und chunk.size die Seite auf die ich nach dem Aufruf der Login-Seite weitergeleitet werde. Diese Seite lade ich meines Erachtens nie in den Speicher. Es läuft so ab:
- Aufruf login.php mit Benuztzerdaten
- direkt im Anschluss Abfrage von index.php
- leeren des Speichers
- Abfrage von dosomething.php
- Ausgabe des Speichers
Wichtig ist noch, wenn ich den exakt gleich Code noch einmal ausführe, steht die richtige Seite im Speicher.
Hoffe jemand kann mir erklären was da vor sich geht.

Gruß,
Daniel
Zuletzt bearbeitet: