Door
Guido -
op 26-08-2020 19:09
gewijzigd op 26-08-2020 19:09
4.401 views
Hallo,
Ik wil binnen mijn website een PHP-functie aanroepen, maar alleen bij de eerste pageload. Dus niet als pagina ververst wordt of opnieuw geladen wordt. De functie is voor een bezoekersteller, vandaar.
Arien: ik snap nu ook wat je bedoelt met: Kijk eerst of er een sessie bestaat. Bestaat die niet dan maak je die aan.
Kijk eerst of een specifieke sessie bestaat.. zo niet, doe je ding en zet sessie alsnog.
Maar ik loop nu wel tegen iets anders aan, waar ik niet aan gedacht had. Ik gebruik de teller per afzonderlijke pagina, maar dat werkt zo niet natuurlijk. Is dan een sessie wel bruikbaar?
Je zegt dat je deze functionaliteit gebruikt voor een bezoekersteller. Beschrijf eens in woorden wat dit functioneel zou moeten doen. Hoe zou er geteld moeten worden? En waar wordt dit vervolgens opgeslagen?
Een PHP-sessie ($_SESSION) heeft een beperkte levensduur. Deze heeft een timeout en raakt ook "ontkoppeld" wanneer iemand het bijbehorende cookie weggooit.
En wat als iemand cookies uit heeft staan?
Wat omvat volgens jou precies een "unieke bezoeker"?
Gewoon een eenvoudige teller, om de bezoekers een idee te geven hoeveel bezoekers een pagina hebben bezocht. Ik doe er verder niets mee. Het is niets meer dan een gadget.
Maar op zich is het ook wel wenselijk dat de sessie niet direct afsluit als ik browser scherm sluit. Maar ik wou eerst de sessie ansich werkend krijgen.
Het is voor een WordPress website. Ik sla de waarde per pagina op in de database via de WordPress functie update_post_meta(). Na // Doe je ding! roep ik een functie aan die 1 optelt bij de waarde die in de database staat.
Als sessies uitgeschakeld zijn op de server, dan zullen er vast meer problemen met een WordPres website zijn, aangezien sessies daar meer worden gebruikt.
Als sessies uitgeschakeld zijn op de server, dan zullen er vast meer problemen met een WordPres website zijn, aangezien sessies daar meer worden gebruikt.
Guido
Huh?
Cookies zijn geen sessies.
Een cookie is bij de bezoeker opgeslagen, en een sessie staat op de server. Wel gebruiken sessies een cookie om de gebruiker te identificeren.
Ik dacht dat een hosting provider het gebruik van PHP-sessies kan blokkeren? En dan zal de cookie dus ook niet aangemaakt kunnen worden. Of begrijp ik het verkeerd?
Ze kunnen het blokkeren, maar daar zou geen reden voor zijn omdat het een veel-gebruikt onderdeel van PHP is. Of er moet een onwetende hostingboer achter de serverknoppen zitten.
>> Een PHP-sessie ($_SESSION) heeft een beperkte levensduur. Deze heeft een timeout en raakt ook "ontkoppeld" wanneer iemand het bijbehorende cookie weggooit.
>> En wat als iemand cookies uit heeft staan?
Dit geldt toch voor alles? Als iemand javascript en/of cookies uit heeft staan dan werkt bepaalde functionaliteit niet. Dit soort "wat als" situaties daar kun je in mijn optiek niet zoveel mee. Als je met sessies werkt dan zijn dit gevallen die kunnen voorkomen, maar je kunt nu eenmaal niet alles 'indekken'.
@Guido
>> $naam = 600;
Zorg dat je overal duidelijke naamgeving gebruikt. Een getal als naam/id van een pagina is super onduidelijk. Gebruik dan bijv. een prefix erbij $naam = 'page_600' of maak het gewoon compleet duidelijk $naam = 'page_contact'. Daarnaast wordt vrijwel altijd gebruikgemaakt van Engels. Dus ik zou dan zelf de voorkeur geven aan $page_id in plaats van $naam, maar goed ... dat is geen vereiste en jouw persoonlijke keuze.
>> Ik dacht dat een hosting provider het gebruik van PHP-sessies kan blokkeren? En dan zal de cookie dus ook niet aangemaakt kunnen worden. Of begrijp ik het verkeerd?
Ja je begrijpt het verkeerd. Een hoster zal PHP-sessies niet blokkeren.