Vraag & Antwoord

Webprogrammeren & scripting

[PHP] Sessions werkt niet met cookies...

Anoniem
Remytje
2 antwoorden
  • Wat ik op het internet heb gelezen is dat, sessions ook met cookies werken, door het PHPSESSID op te slaan in een cookie. Indien de browser cookies niet ondersteunt dan kun je de sessie ook oproepen met SID in de URL.

    zie een artikel op www.webmasterbase.com
    [quote:bc472ec700]…a PHP session works by automatically setting a cookie in the user's browser containing a session ID, which is a long string of letters and numbers that serves to uniquely identify that user on your site for the duration of the visit. The browser then sends that cookie along with every request for a page from your site so that PHP can use it to identify which of potentially many sessions-in-progress the request belongs to. Using a set of temporary files stored on the Web server, PHP keeps track of the variables that have been registered in each session and their values.[/quote:bc472ec700]

    Het oproepen van SID in de URL, vermijd ik liever omdat het dan een lange URL wordt (en minder veilig is? klopt dit), tenzij het echt niet anders kan (browser accepteerd geen cookies).

    Mijn probleem is nu dat bij elke session_start() er een nieuwe sessie wordt aangemaakt als deze niet in de URL van de opgevraagde pagina staat (bv index?PHPSESSID=xxx). Hij leest de sessie-id dus niet uit een cookie. Dit vind ik raar aangezien ik browsers op verschillende pc heb geprobeerd, waar het accepteren van cookies mogelijk is.

    In php.ini staat het gebruik van cookies voor sessions op true. Ik was in de veronderstelling dat session_start() ook direct een cookie aanmaakt (als de browser het ondersteunt), maar dat werkt dus niet.

    Heeft iemand hier een oplossing voor? Moet ik apart nog een cookie wegschrijven met het sessie-id? Of heb ik een instelling fout?

    Nog een ander probleem…. Als ik de browser afsluit en opnieuw open en dan naar de pagina ga [i:bc472ec700]index.php?PHPSESSID=xxx[/i:bc472ec700] dan opent deze gewoon, dus de sessie is niet verwijderd. Ik dacht dat dit automatisch gebeurde… Moet ik dan een timer instellen?

    P.S. Ik gebruik: Apache, PHP, MySQl draaien als service/isapi
  • Wanneer wordt er nu percies een nieuwe sessie gestart? Als je van pagina wisselt (binnen dezelfde site) of als je je browser sluit en later de pagina opnieuw bezoekt?
    Als het optie twee is: dat is normaal ;)
    Het sessieCookie is namelijk tijdelijk en blijft niet op de client staan, maar wordt verwijderd als je de browser sluit.

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.