[php] Sessies vernietigen?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Voor een klein websiteje dat ik aan het maken ben, ben ik nu bezig met het "uitloggen". Wat niet veel meer hoeft voor te stellen dan het vernietigen van de sessiegegevens. Hiervoor heb ik een link gemaakt naar het bestandje uitlog.php met de volgende inhoud:

<?php
session_start();
session_unset();
session_destroy();
?>

Meer staat er gewoon niet in.. en toch blijft PHP zeggen dat de headers al verzonden zijn... Weet iemand hoe dit kan komen (relocaten probeer ik in dit stadium nog maar niet).

Need more info? Just ask :)

Alvast bedankt...

Acties:
  • 0 Henk 'm!

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 14:28
Wat staat er voor <?PHP ?

Acties:
  • 0 Henk 'm!

  • [BoSS]
  • Registratie: Maart 2000
  • Laatst online: 14:36

[BoSS]

Geen woorden maar daden!

Staat er toevallig geen spatie, Carriage Return (entertje) of een ander teken vóór de "<?php" tag?

20x 170 Wp (Solar Frontier) op ZZO / 54 graden


Acties:
  • 0 Henk 'm!

  • Jelmer
  • Registratie: Maart 2000
  • Laatst online: 21:47
staat er geen spatie of enter vóór <?php?

Acties:
  • 0 Henk 'm!

  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
Gokje je include dit bestandje in een algemene pagina die hiervoor wel iets naar de client wegschrijft / een spatie voor het begin van <?php heeft staan....

Acties:
  • 0 Henk 'm!

Verwijderd

hoezo tegelijk posten 3 post op 19:37 :)

staat dat alleen maar in je uitlog.php ?
PHP:
1
2
3
4
# Sessie wordt verwijderd
setcookie( session_name() ,"",0,"/");
session_unset();
session_destroy();

dit gebruik om sessie te verwijderen succes gegarandeerd :)

[ Voor 77% gewijzigd door Verwijderd op 05-04-2004 19:45 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Die 5 regels (inclusief <?php en ?>) zijn het enigste wat in het bestand staat. Er staat niets voor, niets achter en er is niet 1 spatie te vinden.

Deze regeltjes zijn 1 bestand, uitlog.php welke ik gewoon aanroep door op een link te klikken, dus er mag geen sprake zijn van eerder verzonden headers... daarom kom ik er niet uit... raar raar raar

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /home/.sites/143/site2/web/forum/uitlog.php:1) in /home/.sites/143/site2/web/forum/uitlog.php on line 2

[ Voor 24% gewijzigd door Verwijderd op 05-04-2004 19:48 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ja hoor het is een school projectje voor het maken van een forum (nog verre van af :)). Maar je kan je aanmelden, inloggen en dan weer "uitloggen"...

www.hid.nl/forum

Acties:
  • 0 Henk 'm!

Verwijderd

http://www.php.net/manual/en/function.session-destroy.php

De functie session_unset is eigenlijk helemaal overbodig geworden, net als session_register. Ik maak uit de documentatie op dat je het best het volgende kunt gebruiken:

PHP:
1
2
3
session_start();
$_SESSION = array();
session_destroy();


We gebruiken tegenwoordig toch allemaal $_SESSION, hoop ik ;)

Ik vind het niet zo nodig om het cookie te gaan vernietigen. Erop vertrouwen dat het gebeurt kun je toch al niet.

Acties:
  • 0 Henk 'm!

Verwijderd

miss dat je hier eens naar kunt kijken:
http://nl.php.net/manual/...session-cache-limiter.php


cache limiter heeft ook wat met header te maken, miss dat dat je probleem is. Staat ook in je error vandaar :Y)

[ Voor 37% gewijzigd door Verwijderd op 05-04-2004 20:02 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
@ Cheatah, helaas die code geeft de zelfde error.

De "SOURCE" kan je bekijken op:

http://www.hid.nl/forum/uitlog.test

Acties:
  • 0 Henk 'm!

  • Bbfreak
  • Registratie: September 2002
  • Laatst online: 18-07 10:58
Wat ik altijd doe is :
PHP:
1
<? setcookie(cookiename,,time()-3600); ?>

Werkt ook bij mij iig.

Ging om sessies. Verkeerd gezien.

[ Voor 20% gewijzigd door Bbfreak op 05-04-2004 20:05 . Reden: Cookies en Sessions door elkaar gehaald :) ]

Twitter @cmeerbeek / Halo Waypoint Profile


Acties:
  • 0 Henk 'm!

  • Wolfboy
  • Registratie: Januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

gebruik OB dan maar eens, als het echt niet anders wil lukken moet je gewoon buffertjes gebruiken :P

Blog [Stackoverflow] [LinkedIn]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
't zal wel weer aan mij liggen om zoiets simpels niet aan de praat te krijgen :)! Vreeemmsss.. ob, verandert niets, cache limiter doet nix... :?

Acties:
  • 0 Henk 'm!

  • creative8500
  • Registratie: September 2001
  • Laatst online: 01-02 14:14

creative8500

freedom.

Niet dat het beter is, ik vermeld slechts: m.b.v. type casting maak je zo een lege array:
PHP:
1
$_SESSION = (array) null;

Acties:
  • 0 Henk 'm!

  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

Verwijderd schreef op 05 april 2004 @ 19:56:
http://www.php.net/manual/en/function.session-destroy.php

De functie session_unset is eigenlijk helemaal overbodig geworden, net als session_register. Ik maak uit de documentatie op dat je het best het volgende kunt gebruiken:

PHP:
1
2
3
session_start();
$_SESSION = array();
session_destroy();


We gebruiken tegenwoordig toch allemaal $_SESSION, hoop ik ;)

Ik vind het niet zo nodig om het cookie te gaan vernietigen. Erop vertrouwen dat het gebeurt kun je toch al niet.
Het handmatig declareren van de $_SESSION global is volgens mij overbodig. Een session_destroy() is inderdaad wel de beste manier om een sessie af te sluiten :)

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


Acties:
  • 0 Henk 'm!

Verwijderd

wat doet deze code bij jou?
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
session_start();

if($_GET['m'] == 'logout')
{
  session_unset();
  session_destroy();
}

if(!isset($_SESSION['iets']))
{
  $_SESSION['iets'] = 1;
}

echo "<a href=\"test2.php?m=telop\">".$_SESSION['iets']."</a><br>";
echo "<a href=\"test2.php?m=logout\">uitloggen</a><br>";

if($_GET['m'] == 'telop')
{
  $_SESSION['iets']++;

  header("Location ./");
  exit;
}

ben benieuwd :) (je moet op dat cijfertje klikken he :X )

[ Voor 52% gewijzigd door Verwijderd op 05-04-2004 21:38 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Spider.007 schreef op 05 april 2004 @ 21:29:

Het handmatig declareren van de $_SESSION global is volgens mij overbodig. Een session_destroy() is inderdaad wel de beste manier om een sessie af te sluiten :)
Dat session_destroy() de sessie vernietigt: inderdaad. Het is alleen weleens handig dat je nog in dezelfde script executie die sessie variabelen niet meer wilt hebben. $_SESSION = array(); zorgt ervoor dat je die sessie variabelen kwijt bent. Het is dus zeker niet overbodig.

Acties:
  • 0 Henk 'm!

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 14:28
Verwijderd schreef op 05 april 2004 @ 22:10:
[...]Dat session_destroy() de sessie vernietigt: inderdaad. Het is alleen weleens handig dat je nog in dezelfde script executie die sessie variabelen niet meer wilt hebben. $_SESSION = array(); zorgt ervoor dat je die sessie variabelen kwijt bent. Het is dus zeker niet overbodig.
Waarom verander je niet een session-variable, bijvoorbeeld login, die je op false zet?

Acties:
  • 0 Henk 'm!

  • Brakkie
  • Registratie: Maart 2001
  • Niet online

Brakkie

blaat

http://nl.php.net/manual/en/function.ob-start.php

Ben je gelijk van het hele gezeur af :)

Systeem | Strava


Acties:
  • 0 Henk 'm!

Verwijderd

PHP:
1
2
3
4
5
6
7
8
<?php

foreach($_SESSION as $k => $v)
{
   unset($_SESSION[$k])
}

?>


Zoiets werkt prima dacht ik? Heb je ook geen problemen met headers. :-)

Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op 05 april 2004 @ 20:00:
@ Cheatah, helaas die code geeft de zelfde error.

De "SOURCE" kan je bekijken op:

http://www.hid.nl/forum/uitlog.test
in jou source staan voor de "<?php" nog 2 bytes 0xFF en 0xFE(kun je zien met een hex editor) daarom geeft php die error

[ Voor 12% gewijzigd door Verwijderd op 06-04-2004 00:28 ]


Acties:
  • 0 Henk 'm!

  • Stamgastje
  • Registratie: April 2003
  • Laatst online: 02-02-2020
Verwijderd schreef op 06 april 2004 @ 00:22:
[...]

in jou source staan voor de "<?php" nog 2 bytes 0xFF en 0xFE(kun je zien met een hex editor) daarom geeft php die error
Inderdaad, er staat een header voor, maar die is (nu althans) EF BB BF; oftewel je hebt de code opgeslagen met UTF-8 codering. Sla het bestand eens op als gewone Ansi text file en je probleem is opgelost.

[ Voor 4% gewijzigd door Stamgastje op 06-04-2004 03:07 ]


Acties:
  • 0 Henk 'm!

  • Pascal Saul
  • Registratie: Augustus 2001
  • Laatst online: 07-07 17:03
Dit gebruik ik in mijn afmelden.php :)

PHP:
1
2
3
4
5
<?php
session_start();  
session_destroy();  
header ("Location: index.php");  
?>

Acties:
  • 0 Henk 'm!

  • esf
  • Registratie: Juni 2002
  • Laatst online: 21-02 08:56

esf

Is het niet zo dat je dit bestand in een ander bestand include, waarin de headers al verstuurd worden? Voor de rest kan er toch niet zo heel veel aan de hand zijn denk ik.

The hardest thing in the world to understand is the income tax. - Albert Einstein


Acties:
  • 0 Henk 'm!

  • DataGhost
  • Registratie: Augustus 2003
  • Laatst online: 19-09 21:26

DataGhost

iPL dev

heeft iemand zijn source al bekeken... het script is gewoon goed
ALLEEN ik open dus dat bestand wat je gaf in ultraedit
en ik zag dit

code:
1
2
3
4
5
<?php
session_start();
session_unset();
session_destroy();
?>


ofwel: die tekens voor <?php weghalen en dan werkt ie weer :)

edit: sorry ik zag niet dat leonschoorl dit ook al gezien had :)
je wist het kennelijk zelf niet dus idd andere codering

[ Voor 23% gewijzigd door DataGhost op 06-04-2004 07:50 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hmzz ik gebruik "gewoon" Dreamweaver MX en die laat verder niets zien. Ik ga t s even proberen te verwijderen maar dat met die tekens zal het wel zijn.

Blijft vaag 8)

Hartelijk dank iig _/-\o_

Acties:
  • 0 Henk 'm!

  • Stamgastje
  • Registratie: April 2003
  • Laatst online: 02-02-2020
Niet vaag, kijk maar eens hoe je de bestanden opslaat. Ik ken Dreamweaver niet, maar je zult er wel ergens voor gekozen hebben de bestanden in UTF-8 (Unicode) formaat op te slaan, vandaar die 3 bytes (UTF-8 header) voorafgaand aan de tekst.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Dreamweaver slaat het idd op als UTF-8 (Unicode), maar in de lijst in de preferences waar je dit kan selecteren, staat geen mogelijkheid voor "plain text". Enkel andere vormen, Greek, Simplified Chinese etc.

Er staat ook een optie "Other" ... maar k weet niet wat dat doet.

Acties:
  • 0 Henk 'm!

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 14:28
Maak dit bestandje eens opnieuw in kladblok. Check dan even of het wel ok is. Anders ben je nutteloos je tijd aan het verspillen.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb het al getest, en het blijkt te werken.

Acties:
  • 0 Henk 'm!

Verwijderd

djluc schreef op 05 april 2004 @ 22:14:

Waarom verander je niet een session-variable, bijvoorbeeld login, die je op false zet?
Soms wil je ale sessie variabelen in één keer kwijt zijn. Dan kun je aankomen met het unsetten van een enkele waarde, maar dat wordt niet gevraagd. En je kunt aankomen met een loopje die elke waarde unset, maar dat schiet al helemaal niet op als het prima met een enkele regel kan, die óók nog eens letterlijk in de manual staat.

Acties:
  • 0 Henk 'm!

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 14:28
Verwijderd schreef op 06 april 2004 @ 19:05:
[...]Soms wil je ale sessie (...) óók nog eens letterlijk in de manual staat.
NOFI maar in zijn startpost staat duidelijk dat hij het wil gebruiken om uit te loggen. Ik vraag me daarbij gewoon af of dit niet een veel handigere oplossing is. Ik wil hiermee vooral duidelijk maken dat session destroy niet de enige mogelijkheid is. Soms kan het handig zijn om bepaalde gegevens in je session nog te bewaren of om in dezelfde sessie verder te kunnen werken. Ik wijs de TS er alleen maar op dat dit ook een mogelijkheid is en vind je reactie dan ook een beetje bot. Zeker omdat mijn reactie wel degelijk ontopic en speciaal voor dit geval toepasselijk is.
Pagina: 1