Du befindest Dich im Archiv vom ABAKUS Online Marketing Forum. Hier kannst Du Dich für das Forum mit den aktuellen Beiträgen registrieren.

php curl mit session cookie

Ajax, Hijax, Microformats, RDF, Markup, HTML, PHP, CSS, MySQL, htaccess, robots.txt, CGI, Java, Javascript usw.
Neues Thema Antworten
seomedius
PostRank 4
PostRank 4
Beiträge: 153
Registriert: 26.08.2008, 15:58

Beitrag von seomedius » 27.03.2009, 13:32

Hallo,

ich habe ein kleines Problem mit php curl und einem Session Cookie.

Ich führe 2 curl Aktionen aus, in der ersten hole ich mir die sessionid und einen sessioncookie der bis zum ende der Session gültig ist. In der zweiten Aktion verwende ich die zuvor ausgelesene sessionid und den sessioncookie.

Die beiden Aktionen werden von ein und derselben curl_init() initialisiert, sodass es nur eine Session gibt.

Nun zum eigentlichen Problem. Der Cookiefile wird erst nach dem beenden der Session angelegt, was zur Folge hat das die zweite Aktion keine aktuellen Werte übergeben bekommt und der Aufruf fehlschlägt.

Kennt jemand von euch eine Möglichkeit den Cookie vor beenden der Curlsession anzulegen?

Anzeige von ABAKUS

von Anzeige von ABAKUS »

SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


MrTunes
PostRank 9
PostRank 9
Beiträge: 1128
Registriert: 01.05.2007, 20:25
Wohnort: Hier

Beitrag von MrTunes » 27.03.2009, 13:59

Also ich kenn das curl php binding nicht.
Aber vielleicht hilft dir ja mein c code weiter:

Code: Alles auswählen

CURLSH * share_handle = curl_share_init();
curl_share_setopt(share_handle, CURLSHOPT_SHARE, CURL_LOCK_DATA_COOKIE);
curl_share_setopt(share_handle, CURLSHOPT_USERDATA, &share_mutex);
curl_share_setopt(share_handle, CURLSHOPT_LOCKFUNC, lock);
curl_share_setopt(share_handle, CURLSHOPT_UNLOCKFUNC, unlock);

CURL *eh1 = curl_easy_init();
CURL *eh2 = curl_easy_init();
curl_easy_setopt(eh1, CURLOPT_SHARE, share_handle);
curl_easy_setopt(eh2, CURLOPT_SHARE, share_handle);
CURLSHOPT_SHARE

The parameter specifies a type of data that should be shared. This may be set to one of the values described below.

CURL_LOCK_DATA_COOKIE

Cookie data will be shared across the easy handles using this shared object.

Anonymous

Beitrag von Anonymous » 27.03.2009, 14:04

warum nicht einfach die php webclientclass snoopy verwenden? derVorteil ist das die zur not auch ohne curl funktioniert, also das script später wesentlich einfacher auf einen anderen webspace übertragen werden kann... aber wenn, dann die nehmen die bei Wordpress dabei ist, da diese besser gepflegt wird als die bei sourceforge... die bei sourceforge enthält Fehler die bei der in Wordpress beseitigt wurden...

CIX88
PostRank 3
PostRank 3
Beiträge: 90
Registriert: 11.05.2007, 11:45

Beitrag von CIX88 » 28.03.2009, 08:38

Im Prinzip bei CURL erst die Informationen vom Cookie ermitteln, dann praktisch die Seite mit diesen Informationen erneut aufrufen:

generell bei CURL:
curl_setopt($ch, CURLOPT_COOKIESESSION, true);

und wenn der Cookie-Inhalt bekannt ist:
if ( $cookie_inhalt ) { curl_setopt ( $ch, CURLOPT_COOKIE, $cookie_inhalt ); }

seomedius
PostRank 4
PostRank 4
Beiträge: 153
Registriert: 26.08.2008, 15:58

Beitrag von seomedius » 28.03.2009, 17:25

Danke für eure Vorschläge! Snoopy kann zwar mit Sessions und Cookies umgehen war für diesen speziellen Fall aber nicht geeignet. Der Vorschlag von Mr. Tunes einen multi handle zu starten ist für Probleme dieser Art sicherlich sinnvoll.

Ich habe das Problem jetzt mit einer dritten Abfrage in der die zweite benötigte Sessionid übergeben wird gelöst. Die id lese ich aus der Header Antwort mit Hilfe von CURLOPT_HEADER,TRUE aus.

Ich möchte noch bemerken das in diesem Fall zusätzlich mit einem im Hintergrund agierenden Javascript gearbeitet wird und das der Server sehr "streng" ist was den Request und die übergeben Parameter angeht, normalerweise lässt sich sowas mit weniger Aufwand bewältigen.

Antworten
  • Vergleichbare Themen
    Antworten
    Zugriffe
    Letzter Beitrag