Door
Erick Schluter
op 06-01-2011 21:19
gewijzigd op 06-01-2011 21:20
4.020 views
Ik ben bezig met een Wordpress website waarbij er een gedeelte 'protected' is.
Dit houdt in dat men pagina's pas kan zien als er een wachtwoord is ingevoerd. Dit werkt...en naar behoren lijkt mij. Het resultaat is een Cookie.
En je raadt het vast al...ik kan maar geen uitlog-knop verzinnen die werkt.
Dingen als:
unset($_COOKIE['the_cookie_name']);
Of:
setcookie('user','',time()-3600)
Werken gewoon niet...nu ben ik geen PHP ster...of Javascript for that matter. Maar ik moet toch ergens bovenaan een pagina een PHP of Javascriptje kunnen plakken dat er voor zorgt dat alle Cookies worden 'expired'?
Ik weet dat een Cookie op de PC/Mac van een bezoeker staat en dat ik deze niet kan verwijderen...dus vandaar maar 'expire'. Toch?
Ook weet ik niet of ik de naam van een te verwijderen Cookie moet hebben of dat ik die achterwege kan laten...omdat ik natuurlijk 'alle' Cookies wil verwijderen en niet specifiek 1....alle Cookies van het betreffende domein b.t.w..
Iemand een heldere uitleg of oplossing?
Kom er maar niet uit...
Heb je al geprobeerd om het domein op '/' te zetten? Dat helpt nog wel eens. Verder is de laatste methode die je noemt goed, die zou dus moeten werken. Let er wel op dat dit geloof ik pas bij de volgende page-load duidelijk is, en als je het zo wil doen dat zowel het koekje dat in de PHP variablen opgeslagen is als het koekje op de browser wilt verwijderen, je ze dus allebei moet gebruiken:
[edit]
Over een van je laatste vragen: ja, je moet altijd de naam van de cookie weten om het te kunnen verwijderen. Je kan het wel automatiseren zoals in onderstaand voorbeeld:
[/edit]
De situatie:
Iemand is ingelogd op een Wordpress pagina...ik heb een uitlog-knop toegevoegd die naar 'index_test.php' (in dit geval) gaat. Index_test.php bevat het eventuele script dat de Cookies moet verwijderen en springt na verwijderen van de Cookies door naar de 'uitgelogd.php'.
Op 'uitgelogd.php' staan 2 links: 'enter the site' en 'member login'
Als iemand nu op 'member login' klikt komt hij op een pagina waarvoor zou moeten worden ingelogd...maar na klikken op de uitlog-knop blijf je ingelogd.
Ook met jouw beide voorbeelden bovenaan index_test.php...
Toevoeging op 06/01/2011 21:48:47:
Ik heb het probleem denk ik ontdekt.
Er is een pagina genaamd: wp-pass.php met daarin de volgende regel code:
Ik zou eens uitzoeken wat in COOKIEPATH zit, dus onderaan die pagina:
<?PHP
var_dump ( COOKIEPATH );
?>
Dat een cookie 10 jaar bestaat zou niets uit moeten maken, je kan elke cookie verwijderen door mijn code. Ik denk dus dat het aan het path ligt. Ook hebben ze misschien nog meer (rare) beveiligingen gemaakt, maar ik gebruik wordpress niet en weet dus ook niet wat er in de rest van de code staat.
Ligt eraan, als je sessionid opgeslagen word in een cookie (wat je browser automatisch doet) dan ben je sessie niet kwijt in de meeste browsers na een restart.