Door
Donald Boers
op 23-09-2015 11:38
gewijzigd op 23-09-2015 11:43
3.228 views
Voor een online shop heb ik een pagina waar een klant haar/zijn n.a.w. gegevens dient in te vullen. Wanneer de klant het formulier verstuurd zet ik cookies voor de klant_id en naam en gaan deze gegevens de database in. Dit is de code voor de insert en het zetten van de cookies
waarna de klant naar IDEAL wordt door gestuurd om the bestelling af te ronden. Zover heb ik nog geen probleem. Nadat de betaling succesvol is afgehandeld wordt de klant terug geleid naar de website en dit is het punt waar ik problemen ondervindt want ik krijg fout meldingen voor de zojuist gezette cookies. Dit is wat ik heb voor die pagina
is het niet handiger om de klant naar Mollie (?) te sturen met een ordernummer of iets dergelijks, waarna je van Mollie bij de bevestigings aanroep ook dat nummer krijgt,
en als de klant terug komt op je site je wederom dat nummer gebruikt om te zien welke order er bij betrokken was?
Los daarvan:
redirect je de gebruiker naar Mollie in hetzelfde script als waarin je de cookies zet?
Kan zo maar zijn dat dan de header voor de cookies dan niet aankomt als je een header-location: gebruikt.
Na het setten van een cookie moet de pagina ververst worden om de cookies uit te kunnen lezen.
Van php.net:
Once the cookies have been set, they can be accessed on the next page load with the $_COOKIE array.
waarna de klant naar IDEAL wordt door gestuurd om the bestelling af te ronden. Zover heb ik nog geen probleem. Nadat de betaling succesvol is afgehandeld wordt de klant terug geleid naar de website
Dat is dus al het geval. Staan cookies wel aan in de browser? :P
Ik weet niet wat er fout gaat maar ik krijg het niet voor elkaar om de waarde van de cookie op te halen in de returnURL van IDEAL. Ik heb het ook geprobeerd met een session var
In de registratie pagina heb ik dit
$this->session->set('client_id', $client_id);
en in de returnURL
$client_id = $this->session->get('client_id');
Ik blijf een NULL value terug krijgen. Wat kan ik doen?
Om een cookie op je hele (sub)domein geldig te laten zijn moet je het pad expliciet instellen op "/". Voor de lifetime van de cookie zou je "0" op kunnen geven (geldig tot het einde van de sessie, dat wil zeggen, totdat je je browser sluit).
Verder zou ik sterk overwegen om dit soort informatie op te slaan in een sessie ($_SESSION) en van HTTPS gebruik te maken (als je dat al niet deed - en als je dat al doet - setcookie heeft ook een secure-flag (6e parameter)).
Als je al van sessies gebruik maakte zou je kunnen proberen deze voor schrijven te sluiten voordat je redirect. Controleer ook of je uberhaupt een sessie had gestart (bij zowel wegschrijven als ophalen van gegevens).