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

$client_id      = $this->client;
$naam           = filter_input(INPUT_POST, 'naam', FILTER_SANITIZE_STRING);
$adres          = filter_input(INPUT_POST, 'adres', FILTER_SANITIZE_STRING);
$postcode       = filter_input(INPUT_POST, 'postcode', FILTER_SANITIZE_STRING);
$woonplaats     = filter_input(INPUT_POST, 'woonplaats', FILTER_SANITIZE_STRING);
$email          = filter_input(INPUT_POST, 'email', FILTER_SANITIZE_STRING);
$telefoon       = filter_input(INPUT_POST, 'telefoon', FILTER_SANITIZE_STRING);
		
setcookie ("client_id", $client_id);
setcookie ("client_naam", $naam);

if ($client_id && $naam && $adres && $postcode && $woonplaats && $email)
{
	$this->shop->klant_toevoegen($client_id,$naam,$adres,$postcode,$woonplaats,$email,$telefoon);
					
}

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

$client_id      = $_COOKIE['client_id'];
$naam           = $_COOKIE['client_naam'];	

$klant_gegevens = $this->shop->get_klant_gegevens($client_id);
$cart_items     = $this->shop->get_cart_items($client_id);

Wat doe ik hier fout of zie ik over het hoofd?

Bij voorbaat dank.
Donald Boers op 23/09/2015 11:38:04

... want ik krijg fout meldingen voor de zojuist gezette cookies.


Welke?
De volgende:

Notice: Undefined index: client_id in /home/veldhovenfoto/domains/vanveldhovenfotografie.nl/private/includes/classes/Controller/Shop.php on line 309

Notice: Undefined index: client_naam in /home/veldhovenfoto/domains/vanveldhovenfotografie.nl/private/includes/classes/Controller/Shop.php on line 310
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.
Hi Ivo. Bedankt voor de reactie. Nee dit gaat over een andere website waarbij rechtstreeks met de bank in kwestie (ING) wordt gecommuniceerd.
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.
- SanThe - op 23/09/2015 12:18:14

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

Hi San The bedankt voor de reactie. Wat is de link?
Donald Boers op 23/09/2015 12:21:45

Hi San The bedankt voor de reactie. Wat is de link?


Hier is de link, KLik
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?
Je hebt geen pad opgegeven bij het setten van de cookies (4e parameter van setcookie). Het pad geeft aan in welke directory het cookie geldig is.

Als je je cookie set in www.jesite.com/shop/whatever.php en vervolgens terugkeert in www.jesite.com/verwerk_betaling.php dan gaat dit niet werken. Het maakt hierbij niet uit of de directory "virtueel" is (door middel van URL-rewriting tot stand komt) of niet.

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).

Reageren