Meerdere cookies met dezelfde naam in ajax success

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Brecht S

Brecht S

17/10/2016 00:06:08
Quote Anchor link
Ik heb een website voor een interim kantoor waarop meerdere vacatures staan. Als iemand wil inschrijven (solliciteren) voor een bepaalde job moet die naar de detailpagina gaan van die vacature. Daar staat een knop 'solliciteren'. Als je daarop drukt zal via ajax de velden van het formulier dat je te zien krijgt worden doorgestuurd naar een andere pagina die dan alles zal opslaan in database.
De detailpagina heeft in zijn ajax success een cookie die moet worden gezet. Vb cookienaam vacature en de vacature_id als value.
Iedere keer iemand wil inschrijven voor een bepaalde job zal die cookie terug worden overschreven, dus ik ben iedere keer de oude waarden kwijt. Meerder cookies met dezelfde naam kan volgens mij niet. Heeft iemand van jullie hiervoor een oplossing?
De bedoeling is dat iedere keer een werkzoekende op de website komt hij/zij dus geen 2x voor dezelfde job kan inschrijven.
 
PHP hulp

PHP hulp

18/04/2024 20:10:31
 
Ozzie PHP

Ozzie PHP

17/10/2016 00:16:29
Quote Anchor link
>> De bedoeling is dat iedere keer een werkzoekende op de website komt hij/zij dus geen 2x voor dezelfde job kan inschrijven.

Dan zijn cookies niet de oplossing, want veel browsers verwijderen die automatisch bij het afsluiten.

Beter sla je dit soort informatie dus in een database op.
 
Adoptive Solution

Adoptive Solution

17/10/2016 00:21:26
Quote Anchor link
Wat je al niet kan vinden, inclusief goede raad :

https://www.google.nl/search?q=set+multiple+cookies+php

Voorbeeld #3 lijkt de oplossing :

http://php.net/manual/en/function.setcookie.php
 
- Ariën  -
Beheerder

- Ariën -

17/10/2016 00:22:06
Quote Anchor link
En bij 20 cookies kunnen sommige browsers moeilijk doen, als dat nog steeds zo is?
Gebruik liever een database, zoals al gezegd is.
 
Pg Vincent

Pg Vincent

17/10/2016 09:09:52
Quote Anchor link
Browsers gooien cookies niet weg als je hem sluit, tenzij je de date-expires op nul hebt gezet, of in cognito-mode werkt. Tegenwoordig slaan we browser-side data op in localstorage, dat is een stuk netter en betrouwbaarder want setcookies() is elke keer weer een gezeur omdat de call per browser verschilt.

Maar zoals gezegd; gegevens over welke vacatures een bezoeker bekijkt/bewerkt etc wil je altijd *serverside* opslaan.
Dat heeft twee redenen. Ten eerste wil jij inzicht in welke vacatures door wie worden bekeken en wanneer en waarom etc. Dat is van levensbelang voor je interne marketing.
Ten tweede is de database dynamisch; er komen records bij en gaan records af en er zullen ook wel eens records worden vervangen. Als alles is opgeslagen in een database dan worden al die wijzigingen automatisch meegenomen in de data van elke gebriuker. Als je de data browser-side opslaat zul je bij elke pageview opnieuw moeten kijken of de id's die zijn opgeslagen nog bestaan in de database, en actie moeten ondernemen als dat niet zo is. Dat is een intense berg werk die in feitte dus gewoon ON UPDATE CASCADE en ON DELETE RESTRICT nabouwt. Nee, niet ON DELETE CASCADE, want dat mag dus niet als je client-side opslaat... als een id server-side is weggehaald en client-side nog is bijgewerkt dan heb je een gigantisch probleem...

Kortom: geef je bezoeker een uniek id in z'n localstorage of cookie, en sla de rest allemaal server-side op.
 
Brecht S

Brecht S

17/10/2016 11:18:59
Quote Anchor link
@Pg Vincent: ik denk dat jouw oplossing de beste is. Ik heb alles mooi opgeslagen in database en een cookie gezet met een uniek user_id. at is bij iedere user steeds dezelfde. En dan doe ik een check of de vacature_id en de user_id voorkomt in de database. Werkt goed zo.
Gewijzigd op 17/10/2016 11:20:33 door Brecht S
 
Ozzie PHP

Ozzie PHP

17/10/2016 13:28:20
Quote Anchor link
>> Browsers gooien cookies niet weg als je hem sluit, tenzij je de date-expires op nul hebt gezet, of in cognito-mode werkt.

Daar maak je een kleine denkfout. JIJ als programmeur kunt een cookie wel dusdanig instellen dat deze blijft bestaan, maar IK als gebruiker kan mijn browser zo instellen dat ALLE cookies worden verwijderd als ik m'n browser afsluit. Een cookie is nooit 100% betrouwbaar omdat deze zich aan de gebruikerskant bevindt en je daar nooit 100% controle op hebt.

Dat gezegd hebbende ...

Waarom zou überhaupt iemand zich 2 keer voor dezelfde vacature inschrijven? Dan ben je wel vrij stom bezig lijkt me.

Maar goed, als je het op een betere manier wil afvangen, dan zou je kunnen controleren op e-mailadres. Je laat iemand eerst z'n e-mailadres invullen waarna je controleert of dat e-mailadres zich al heeft ingeschreven. Aangezien een e-mailadres uniek is, is dit wellicht een meer solide oplossing.
Gewijzigd op 17/10/2016 13:31:02 door Ozzie PHP
 
Thomas van den Heuvel

Thomas van den Heuvel

17/10/2016 14:34:34
Quote Anchor link
Ozzie PHP op 17/10/2016 13:28:20:
Waarom zou überhaupt iemand zich 2 keer voor dezelfde vacature inschrijven? Dan ben je wel vrij stom bezig lijkt me.


Pretty much this.

Daarnaast. Soms heb je eenzelfde vacature die opnieuw wordt uitgezet. Nieuwe ronde, nieuwe kansen. Met de huidige constructie zou iemand hier dan niet nogmaals op kunnen reageren?

Ik denk dat hier sprake is van overautomatisering. Ik bedoel, komt het ooit voor dat iemand meerdere keren solliciteert op eenzelfde vacature (met uitzondering van bovenstaande situatie)? Is dit echt een reëel scenario? Het klinkt nogal vergezocht allemaal. Wat gebeurt er in het ergste geval? Dat een kandidaat niet wordt uitgenodigd? Please.
 
Ozzie PHP

Ozzie PHP

17/10/2016 14:38:26
Quote Anchor link
Inderdaad Thomas.

Of wat als er 2 mensen in 1 gezin op dezelfde vacature willen reageren. Dan mag de een niet meer omdat de ander al heeft gereageerd :-)
 
Ward van der Put
Moderator

Ward van der Put

17/10/2016 14:50:05
Quote Anchor link
>> Of wat als er 2 mensen in 1 gezin op dezelfde vacature willen reageren.

Die hebben gelukkig allemaal een eigen gebruikersaccount, dus eigen cookies, net zoals mijn gewone internetaccount in Google Chrome wel cookies heeft en mijn beheerdersaccount in Mozilla Firefox helemaal geen. ;-)

Als je dit soort problemen toch wilt overautomatiseren, zou ik eerst eens kijken naar iets dat ook voor gebruikers zelf voordelen heeft. Denk bijvoorbeeld aan een gebruikersaccount: daarmee kun je bijvoorbeeld de personalia voor volgende sollicitaties alvast invullen en op basis van eerdere sollicitaties suggesties voor andere vacatures doen.
 
Ozzie PHP

Ozzie PHP

17/10/2016 14:51:43
Quote Anchor link
>> Die hebben gelukkig allemaal een eigen gebruikersaccount

Ook dat is weer een veronderstelling die in lang niet alle gevallen opgaat. Genoeg huishoudens waar gewoon één account wordt gebruikt en iedereen dus van dezelfde browser en browserinstellingen gebruikmaakt.
 
Thomas van den Heuvel

Thomas van den Heuvel

17/10/2016 14:53:18
Quote Anchor link
Ward van der Put op 17/10/2016 14:50:05:
op basis van eerdere sollicitaties suggesties voor andere vacatures doen.

Holy sh*t, dit zou wel eens het ei van Columbus kunnen zijn. Als zoiets wordt gemaakt heb je in ieder geval al een (flink) streepje voor op de meeste (IT) vacature sites.
 
Pg Vincent

Pg Vincent

17/10/2016 15:06:45
Quote Anchor link
"Daar maak je een kleine denkfout. JIJ als programmeur kunt een cookie wel dusdanig instellen dat deze blijft bestaan, maar IK als gebruiker kan mijn browser zo instellen dat ALLE cookies worden verwijderd als ik m'n browser afsluit."

Dat kun je doen, en dat is ook wat er gebeurt bij incognito mode.

" Een cookie is nooit 100% betrouwbaar omdat deze zich aan de gebruikerskant bevindt en je daar nooit 100% controle op hebt."

Niets wat aan de client kant staat is betrouwbaar, maar zonder *iets* aan de client kant kun je de client niet meer herkennen, dus of het gewist kan worden is dan ineens niet meer interessant. In het ergste geval zul je sommige gebruikers moeten vertellen dat ze cookies moeten accepteren, maar dat geldt voor vrijwel alle websites waar je op aan moet loggen dus het hele "wat als ze geen cookies accepteren" verhaal is feitelijk moot.


"Ik bedoel, komt het ooit voor dat iemand meerdere keren solliciteert op eenzelfde vacature (met uitzondering van bovenstaande situatie)? "

F5 is een wonderlijk knopje.


"Is dit echt een reëel scenario? Het klinkt nogal vergezocht allemaal. Wat gebeurt er in het ergste geval? Dat een kandidaat niet wordt uitgenodigd? Please."

In het ergste geval zet iemand een botje aan die op elke vacature twee miljoen keer reageert en dan is de inbox gegarandeerd onbruikbaar. En als er ook nog een email notificatie achter zit....


Mijn regel is simpel: als het niet mogelijk moet zijn, dan moet het niet mogelijk zijn. Als mensen zich niet dubbel moeten kunnen inschrijven dan moet dat onmogelijk zijn. Als later blijkt dat het toch gewenst is dan kun je er altijd nog een mouw aan passen, maar als je website wordt neergehaald omdat jij dacht dat het wel mee zou vallen, dan heb je een veel groter probleem.
 
Ozzie PHP

Ozzie PHP

17/10/2016 15:14:06
Quote Anchor link
>> Niets wat aan de client kant staat is betrouwbaar, maar zonder *iets* aan de client kant kun je de client niet meer herkennen, dus of het gewist kan worden is dan ineens niet meer interessant.

Wel degeljk. Vaak zijn sessie-cookies gewoon te gebruiken en kun je zaken in een sessie opslaan. Wat ik aangeef is dat een cookie niet beschermt om bepaald gedrag tegen te gaan. Dat zul je server-site moeten regelen.

>> F5 is een wonderlijk knopje

Daar is de vraagstelling alleen niet op gebaseerd. En bovendien kennen we daar bijv. het gebruik van tokens voor.

>> In het ergste geval zet iemand een botje aan die op elke vacature twee miljoen keer reageert en dan is de inbox gegarandeerd onbruikbaar.

En dat wou jij dan tegenhouden door een cookie te plaatsen? Haha ... nice one. Nee, daar gebruik je andere methodes voor.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.