In php zijn allerlei verschillende operatoren. Hier een drietal die misschien op elkaar lijken maar toch verschillend zijn.
1. assignment operator =
voorziet een variabele van een nieuwe waarde.
<?php
$a = 1; // $a heeft nu de waarde 1
$b = $a; // $b krijgt de waarde van $a
?>
2. vergelijkingsoperator ==
Test of twee waarden gelijk zijn (type onafhankelijk). Levert altijd TRUE of FALSE op.
<?php
if(2 == '2') { // vergelijk een getal met een tekst
echo 'true';
} else {
echo 'false';
}
?>
uitkomst: true;
3. vergelijkingsoperator ===
Test of twee waarden gelijk zijn (type afhankelijk). Levert ook altijd TRUE of FALSE op.
<?php
if(2 === '2') { // vergelijk een getal met een tekst
echo 'true';
} else {
echo 'false';
}
?>
uitkomst: false;
?
Onbekende gebruiker
22-02-2020 20:46
Bedankt voor jullie reactie.
Maak ik van == een enkele = dan geeft het nog foutmelding bij eerste keer laden, reload geeft geen foutmelding meer.
Notice: Undefined index: JaiDje_Language in C:\HTDOCS\test.php on line 9
Notice: Undefined index: JaiDje_Page in C:\HTDOCS\test.php on line 15
Notice: Undefined index: JaiDje_Show in C:\HTDOCS\test.php on line 21
Notice: Undefined index: JaiDje_Language in C:\HTDOCS\test.php on line 23
Notice: Undefined index: JaiDje_Page in C:\HTDOCS\test.php on line 24
Notice: Undefined index: JaiDje_Show in C:\HTDOCS\test.php on line 25
- Browser doet een request aan webserver en stuurt daarbij al dan niet een cookie mee
- php leest het cookie uit (als die er is) en plaatst deze in de $_COOKIE array.
- de inhoud van deze array veranderd NIET. Dus ook niet wanneer je setcookie gebruikt. Dit komt pas bij de volgende request naar voren.
Je kan het zo oplossen..
<?php
// Maak een variabele $language en geef deze een standaard waarde (default value).
$language = 'EN';
m.a.w. indien je een cookie set met setcookie() zit dit cookie pas het volgende request in $_COOKIE.
Het zetten van een cookie is in principe ook een "state change", dus wat dat betreft zou je direct daarna een page refresh moeten doen.
?
Onbekende gebruiker
22-02-2020 23:28
Dank voor de opzet, alleen krijg ik nog foutmeldingen:
Notice: Undefined index: JaiDje_Language in C:\HTDOCS\test.php on line 18
Notice: Undefined index: JaiDje_Page in C:\HTDOCS\test.php on line 26
Notice: Undefined index: JaiDje_Show in C:\HTDOCS\test.php on line 34
Notice: Undefined index: JaiDje_Language in C:\HTDOCS\test.php on line 43
Notice: Undefined index: JaiDje_Page in C:\HTDOCS\test.php on line 45
Notice: Undefined index: JaiDje_Show in C:\HTDOCS\test.php on line 47
Maar nu ook NA de refresh blijven deze meldingen komen.
Blijft de optie van een refresh over, en dat wilde ik eigenlijk voorkomen.
Andere optie (komt op zelfde neer) de cookies op te zetten in een eerste pagina en dan na het opzetten doorlinken naar de daadwerkelijke pagina.
Maar vind dat eigenlijk een lapmiddel, dit moet toch netter te doen zijn?
PS. de reden dat ik de cookies uitgebreider benoem is om ze herkenbaar te houden als geldend voor de gehele website, verderop in de code komen de "eenvoudige" namen al voor en wil zo verwarring voorkomen.
[size=xsmall]Toevoeging op 22/02/2020 23:31:20:[/size]
PS2, ook met kortere namen blijft het probleem bestaan:
Notice: Undefined index: Language in C:\HTDOCS\test.php on line 18
Notice: Undefined index: Page in C:\HTDOCS\test.php on line 26
Notice: Undefined index: Show in C:\HTDOCS\test.php on line 34
Notice: Undefined index: Language in C:\HTDOCS\test.php on line 43
Notice: Undefined index: Page in C:\HTDOCS\test.php on line 45
Notice: Undefined index: Show in C:\HTDOCS\test.php on line 47
Cookies will not become visible until the next loading of a page that the cookie should be visible for. To test if a cookie was successfully set, check for the cookie on a next loading page before the cookie expires. Expire time is set via the expires parameter. A nice way to debug the existence of cookies is by simply calling print_r($_COOKIE);.
Dus pas na een refresh kan je een cookie benaderen met $_COOKIE.
?
Onbekende gebruiker
22-02-2020 23:34
Dan maar kiezen voor de "minder" nette oplossing, jammer, maar zit denk ik niks anders op.