Probleem cURL (headers/post)
Een tijdje geleden maakte ik dit topic aan. Je kunt het doorlezen, zodat je precies weet waar het over gaat... maar ik denk dat je met enkel dit topic me vast wel kunt helpen (hopelijk :P)
Inmiddels snap ik hoe cURL werkt en het inloggen op een andere site bijvoorbeeld gaat vlekkeloos. Echter wil ik natuurlijk niet alleen inloggen op een andere site. De volgende actie komt erop neer dat er een bepaalde ID (van een lid) gepost wordt zodat diegene verwijderd wordt. Hierbij hoeven we alleen rekening te houden met wat aan de client-zijde gebeurt. Als voorbeeld nemen we de volgende URL:
http://www.example.com/action/delete/ die enkel werkt via POST met de volgende velden: somedata & userId (neem voor beide velden even een numerieke waarde en ga er vanuit dat dit klopt). Met de Firefox Add-Ons Firebug en Tamper Data heb ik precies opgezocht hoe en wat er verstuurd wordt. Hier kan het dus niet fout gaan.
Via Tamper Data krijg ik twee schermen: De request en de response headers. Het lijkt me logisch dat request door de browser wordt gedaan en dat daarop de response headers terugkomen. Vervolgens zet ik in cURL de URL die aangeroepen moet worden, dat het om een POST-actie gaat, de velden die ingevuld moet worden, alles voor de cookies (ik heb vele malen gecontroleerd of er ingelogd wordt, dit klopt), een Firefox user-agent... RETURNTRANSFER en FOLLOWLOCATION beide op true en bij de HTTPHEADER zet ik in de array nog even een Content-Length die bepaald wordt door de strlen() van de ingevulde velden.
Vervolgens laat ik cURL alles outputten en dan krijg ik vreemd genoeg de foutpagina van de andere site door. De foutpagina die je krijgt als je de pagina opvraagt via de GET methode. Echter is het wel zeker dat er POST gebruikt is... inloggen lukte immers ook. Laten we nog even teruggaan naar die headers. In mijn browser worden er nog een paar andere headers meegestuurd. Zoals Pragma: no-cache, het gebruike (wat cURL ook meestuurt) en dan komen er drie 'ongebruikelijke' headers. In de vorm X-[Nog-Wat]. De eerste twee zijn altijd hetzelfde, maar de laatste is een sleutel. Zou ik die misschien in de HTTPHEADERS van cURL ook mee moeten verzenden? En hoe zorg ik ervoor dat ik de juiste sleutel mee stuur... dat kan immers niet simpel met een bestaande functie gebeuren dus dat moet ik ergens weg zien te halen.
Hopelijk begrijp je het probleem en weet je of de fout misschien komt door verkeerde/ontbrekende headers te versturen. Met de POST kan haast niks fout gaan.
Toevoeging op 03/11/2010 16:11:14:
Hmmmm had inmiddels al een reactie verwacht... ik wacht nog geduldig af :P
Toevoeging op 03/11/2010 18:01:50:
Probleem is al op gelost... er moeten nog een paar fixes komen :)
Gewijzigd op 03/11/2010 16:11:44 door Allovich von Beerrenburg
Er zijn nog geen reacties op dit bericht.