Ik ben een site aan het maken met een inlog script.
Het inlog formulier geeft de huidige pagina mee, in dit voorbeeld index.php?page=rwl&id=1.
Ik heb deze data in de variabele $nextpage gezet.
Als ik deze echo staat er gewoon het volledige adres,
maar zodra ik
header("Location: ".$nextpage);
gebruik, kom ik uit op index.php?page=rwl.
Het &id=1 gedeelte wordt dus weggelaten.
Iemand enig idee hoe ik dit kan oplossen?
In LOCATION: hoef je -zover ik weet - de & niet te escapen. Ik doe het tenminste nooit :P
in window.location MOET HET NIET! Ook daar zit weer een uitzonderin op wanneer je window.location in een HTML attribute heb gezet.
voor de duidelijkheid:
& moet je alleen veranderen in & wanneer deze in een HTML attribute staat. Zelfde voor alle andere vreemde tekens.
<a href="index.php?a=1&b=2"> is dus eigenlijk fout.
dat hoort
<a href="index.php?a=1&b=2"> te zijn.
<body onload="window.lcation='index.php?a=1&b=2' "> is goed omdat het & teken in een HTML attribute staat, namelijk 'onload'.
wanneer je dit echter in de javascript file zet hoef je em niet te escapen. Sterker nog: je mag em niet escapen, want anders doet je link het niet.
ALLES in een HTML tag's attribute tussen " en " moet escaped worden met uitzondering van 'standaard' tekens.
Een korte zelfbedachte vuistregel:
Alle tekens die je op een US international toetsenbord NIET kan intypen met 1 toetsencombinatie ZONDER gebruik van CTRL of ALT, moet je escapen.
de é moet je dus escapen, want je hebt 2 toestencombinaties nodig: Eerst [SHIFT] + ['"] en daarna de [E].
De E hoef je niet te escapen, want die typ je in 1x met [SHIFT] + [E]
De € moet je WEL escapen, want om die te typen moet je [CTRL] + [ALT] + [5] gebruiken. Het is wel 1 toetsencombinatie, maar je maakt gebruik van CTRL + ALT, en dan telt het niet volgens de vuistregel.
Enige uitzonderingen:
in HTML attributen moet je " escapen naar "
buiten tags moet je < en > escapen naar < en >
PHP heeft een ingebouwde functie voor het omzetten van speciale tekens, namelijk htmlentities();.
veel succes :P
lees het vooral rustig door als je het wilt snappen :P