Ik ben niet zo heel goed bekend met PHP maar kan redelijk mijn plan trekken. Ik heb onlangs een registratie en login script gevonden welk via PDO werkt. Dit werkt prima en doet wat het moet doen maar zoals vele mensen wil ik dit script wat uitbreiden met extra velden en mogelijkheden.
Wat is wil doen is het volgende:
Bij de registratie moet de voornaam, e-mailadres en een wachtwoord ingegeven worden. Maar in mijn database heb ik het extra veld "achternaam" bij aangemaakt. De bedoeling is dat wanneer men de eerste keer in logt naar een aparte pagina gaat waar men deze achternaam moet invullen en als men een volgende keer in logt dat men dan naar de standaard pagina (maakt niet uit welke) gaat.
Hopelijk is mijn uitleg een beetje duidelijk ;-)
Als jullie meer informatie nodig hebben dan hoor ik het wel.
Is men dan verplicht deze gegevens in te vullen? Zo ja, dan kun je gewoon controleren of deze waarde leeg is dan het formulier voorschotelen. Zo nee, dan kun je een kolom aanmaken met een default waarde 0. En zodra je het formulier hebt getoond zet je deze op 1. Dus dan controleer je if(kolom === 0) { formulier, set kolom =1 } of set tijdens dat je de rest opslaat.
Hallo Michael, men is inderdaad verplicht om dan die gegevens in te vullen. Het probleem is dat met al wat ik al op Google heb gevonden ik er niet uit kom. Ik krijg soms een error "to many redirects" ofhet werkt gewoon niet. Maakt het uit waar ik die code plaats?
Hallo Ariën, mijn bedoeling is dat je tijdens de registratie enkel je voornaam, email en wachtwoord op geeft. Dan moet je activeren (dit werkt ook). Daarna log je in met uw juist geactiveerde gegevens en moet je de rest (achternaam) invullen. Als je dit bewaard dan wordt er een mail gestuurd met de volledige gegevens zoals ze in de database staan met als titel bvb. "inschrijving". Als het lid dan uiteindelijk wijzigingen aanbrengt dan zou er een andere mail moeten gestuurd worden met als titel bvb. "update" zodat ik weet dat dat bepaalde lid zijn gegevens heeft geupdate. Dus ofwel moet ik iets vinden om te kijken dat je voor de eerste keer in logt ofwel kan er gecontroleerd worden of het veld "achternaam" leeg is en aan de hand van die uitkomst moet er dan geredirect worden naar bvb. inschrijving of naar bvb. update.
Sla bijvoorbeeld een boolean op ("profile_requires_update" of wat dan ook). Of zelfs een soort van "user state".
Vervolgens heb je je profielformulier waarin je normale validatie zit. Ik neem aan dat je daar ook controleert of bepaalde velden verplicht zijn of niet.
Als je in deze opzet een nieuw veld hebt hoef je enkel het formulier + de validatie aan te passen en gooi je alle profile_requires_update kolommen op 1 / true. Je hoeft dan enkel een voorziening te hebben die je in dit geval verplicht langs je profielformulier stuurt, ongeacht wat voor wijziging dit betreft. Indien de (nieuwe) validatie slaagt zet je tevens dit veld op 0 / false.
En dit werkt vervolgens voor alle nieuwe wijzigingen en toevoegingen en hoef je geen maatwerkcode te schrijven voor nieuwe verplichte velden omdat deze kolom + de aangepaste validatie hier tezamen voor zorgen.
Met deze opzet ontkoppel je ook de controle dat iets geupdate moet worden, en wat deze update precies omvat. In plaats van deze controle dus te hard coden. Met die aanpak zul je ook elke keer maatwerkcode bij moeten kloppen, bij mijn opzet hoef je enkel het profielformulier aan te passen (wat je sowieso moet doen voor deze wijziging) en je gooit een kolom op true en de rest gaat vanzelf (nu ja, je zult eenmalig een controle op profile_requires_update moeten bijschrijven, maar dat is alles).
Als het profiel een aantal keren inhoudelijk verandert heeft deze eenmalige investering zich zo terugverdiend. Wanneer je een niet-generieke opzet gebruikt zul je (extra, en in wezen overbodige) code moeten blijven kloppen.