loginscript maken
Ik denk te weten waar ik op moet letten bij het gebruiken van een script van een ander. Daarom lijkt mij een handleiding met aanwijzingen ook de aangewezen (en meest leerzame) weg.
Wie kan mij helpen aan een handleiding voor een script met (ongeveer) de volgende stappen:
- registratie met vrije keuze wachtwoord
- check e-mail
- validatie door beheerder
- inloggen (met mogelijkheid reset wachtwoord)
De gebruiker moet bij voorkeur de mogelijkheid hebben om het wachtwoord zelf te wijzigen.
Ik ben bereid om een heleboel te leren, maar m'n grijze massa begrijpt niet alles
Vriendelijke groet,
Guido
Guido van Harten op 03/08/2016 18:45:36:
Helaas is mijn kennis van PHP en MySQL te beperkt om het helemaal zelf te doen. Een handleiding met aanwijzingen is ook welkom (als ik dan niet uitkom, stel ik mijn vragen op helpmij).
[/quote]
Je bedoelt PHPhulp, neem ik aan? ;-)
Wat is je PHP kennis tot nu toe? En waar loop je tot nu toe op vast?
[/quote]
Je bedoelt PHPhulp, neem ik aan? ;-)
Wat is je PHP kennis tot nu toe? En waar loop je tot nu toe op vast?
- Ariën - op 03/08/2016 19:01:21:
Je bedoelt PHPhulp, neem ik aan? ;-)
Je bedoelt PHPhulp, neem ik aan? ;-)
Oeps, dat krijg je ervan. Natuurlijk plaats ik mijn vragen dan hier...
Quote:
Wat is je PHP kennis tot nu toe? En waar loop je tot nu toe op vast?
Tja, hoe meet je kennis, of hoe geef je die weer? Ik begrijp wat een PHP-file doet, en kan eenvoudige scriptjes schrijven, maar heb wel veel voorbeelden nodig. Leve het internet...
En waar ik op vastloop is het versturen van de validatielink en het bieden van de mogelijkheid om de gebruiker z'n wachtwoord te laten wijzigen. Geen idee hoe ik dat moet aanpakken...
Gewijzigd op 03/08/2016 20:35:00 door Guido van Harten
Als iemand het formulier verstuurt, dan vindt er een eerst een validatie plaats:
- Is de username uniek
- Is het ingevoerde mailadres wel geldig (hint)
- Is het bedachte password lang genoeg en sterk? (Hint)
Als hieraan is voldaan, dan kan je de gebruiker in de database plaatsen, met een unieke code erbij. Die stuur je naar per e-mail naar de gebruiker toe, en als die code overeenkomt dan is het mailadres bevestigd, en dan kan je een bericht naar de beheerder sturen of ze het account handmatig kunnen openstellen.
Guido van Harten op 03/08/2016 18:45:36:
Wie kan mij helpen aan een handleiding voor een script met (ongeveer) de volgende stappen:
- registratie met vrije keuze wachtwoord
- check e-mail
- validatie door beheerder
- inloggen (met mogelijkheid reset wachtwoord)
De gebruiker moet bij voorkeur de mogelijkheid hebben om het wachtwoord zelf te wijzigen.
- registratie met vrije keuze wachtwoord
- check e-mail
- validatie door beheerder
- inloggen (met mogelijkheid reset wachtwoord)
De gebruiker moet bij voorkeur de mogelijkheid hebben om het wachtwoord zelf te wijzigen.
de minimale usertable:
-user_id [int autoincrement primary key]
-username [varchar, lengte: 64]
-email [varchar, lengte: 255]
-password [varchar, lengte: 255]
-token [varchar, lengte: 255]
-verified [int, lengte: 1, standaardwaarde: 0]
-active [int, lengte: 1, standaardwaarde: 0]
registratie met keuze wachtwoord:
Zoals ieder formulier in PHP: HTML formulier maken, als deze verzonden is dan VALIDEREN en als deze door de validatie komt dan gebruiker toevoegen aan de database, email versturen naar gebruiker en/of beheerder(s) en gebruiker doorsturen naar een andere pagina. Het password dien je gecodeerd op te slaan in de database. Google eens op BCRYPT.
check e-mail (email verificatie)
Een token aanmaken, dit token opslaan in de users tabel waar ook de andere gegevens staan van de zojuist geregistreerde user. (dus een kwestie van een extra kolom met de naam 'token' of iets dergelijks). Dan in de mail een link meesturen waar de gebruiker in zijn email op kan klikken. In deze link moet het token staan. bijvoorbeeld: http://phphulp.nl/verify-email.php?token=jdjcfuhe9ry98ygdks. Klikt deze gebruiker op deze link dan zal hij op een nieuwe pagina komen 'verify-email.php' waarin een GET variabele gelezen kan worden met daarin het token. Dit token ga je vervolgens proberen terug te vinden in de tabel 'users' ( SELECT id FROM users WHERE token='jdjcfuhe9ry98ygdks' ) Indien gevonden: zet de kolom 'verified' op 1 en verwijder het token.
validatie door beheerder:
Dit betekend een nieuwe kolom in de users table. Bijvoorbeeld met de naam 'active' welke dan in eerste instantie op 0 staat. de beheerder moet hier een 1 van maken
inloggen:
gebruiker een username of email en een wachtwoord laten invullen en dan deze username/mailadres en (gecodeerd) wachtwoord opzoeken in de database. Gevonden? mooi gebruiker wordt dan ingelogd door een variabele in de sessie te plaatsen. bijv. $_SESSION['login'] = $user_id; (Sorry meer dan dat is het niet. Vervolgens user doorsturen naar een pagina die je logisch lijkt. Vergeet overigens session_start() niet. Nog even een zijstapje: sla nooit ongecodeerde gebruiker-wachtwoorden op in de database maar codeer deze eerst met bijv. BCrypt. Bij het login formulier codeer je op exact dezelfde wijze het ingevoerde wachtwoord en dit gecodeerde wachtwoord (of hash) vergelijk je dan met die in de database.
reset wachtwoord:
laat gebruiker emailadres invullen en kijk of je deze kunt vinden in de database. zo ja: Maak een token en sla deze op in de database en stuur deze gebruiker een email met een unieke link net als bij 'email verificatie'. gebruiker klikt op de link die hij aantreft in zijn email box en komt op een nieuwe pagina bijv. password-reset.php alwaar wederom in de database gezocht wordt op dit token. Gevonden? Maak een random wachtwoord aan. Stuur het random wachtwoord per mail naar de gebruiker. Codeer het nieuwe wachtwoord en vervang de hash voor de oude in de database. Verwijder het token.
beveiligde pagina:
controleer of de variabele bestaat in de sessie. zo ja: ga door en zo nee redirect de user naar het inlog formulier
mogelijke uitbreidingen:
- rollen aan users toekennen zodat we verschillende users met verschillende rechten kunnen benoemen.
- datum van registratie en/of laatste inlog bijhouden
- een 'edit mijn profiel' pagina
- een 'verander mijn password pagina'
- een 'account opheffen' pagina
Gewijzigd op 04/08/2016 10:57:31 door Frank Nietbelangrijk
http://www.codingcage.com/2015/09/login-registration-email-verification-forgot-password-php.html
Gewijzigd op 03/08/2016 23:06:24 door Adoptive Solution
Adoptive Solution op 03/08/2016 23:05:47:
Ik weet niet of de vragensteller bekend is met het fenomeen zoeken, maar met gebruik van de opgegeven trefwoorden kwam ik dit tegen :
http://www.codingcage.com/2015/09/login-registration-email-verification-forgot-password-php.html
http://www.codingcage.com/2015/09/login-registration-email-verification-forgot-password-php.html
Nee, deze ben ik niet tegengekomen tussen de resultaten. Ik ga ook deze bekijken om er m'n voordeel mee te doen.
Bedankt!
Zelf neig ik naar zelfbouw, en de stappen proberen te volgen die ik en Frank in dit topic hebben uitgelegd.
Op die manier leer je PHP ook goed en grondig kennen.
"Maak een random wachtwoord aan. Stuur het random wachtwoord per mail naar de gebruiker."
En als iemand toegang heeft tot de mailbox van de gebruiker kan hij daarin (desnoods 2 jaar later) het wachtwoord opduikelen.
Liever zou ik de gebruiker vragen om 2x een zelf gekozen (sterk) wachtwoord in te voeren.
Dat voorkomt ook niet onthoudbare wachtwoorden die elke keer weer opgezocht moeten worden in een lijst of op een geeltje op de monitor.
(ok, als iemand toegang heeft tot de mailbox kan hij ook het ww. resetten, maar in elk geval laat dat het spoor na dat gebruiker ineens niet meer met het bekende ww in kan loggen.)
Hoi Ivo, dit zijn goede overwegingen die de veiligheid doen opschroeven. Over de veiligheid heb ik bewust niet geschreven omdat dan een soort boekwerk ontstaat. Ik zou tegen de gebruiker willen zeggen dat bovenstaande puur is om de skills te beoefenen en misschien geschikt kan zijn voor een hobby website of iets dergelijks maar voor het echte werk komt er natuurlijk nog wel even iets bij kijken om het veilig te maken. Ik heb overigens de tekst nog iets aangepast.
Adoptive Solution op 03/08/2016 23:05:47:
Ik weet niet of de vragensteller bekend is met het fenomeen zoeken, maar met gebruik van de opgegeven trefwoorden kwam ik dit tegen :
http://www.codingcage.com/2015/09/login-registration-email-verification-forgot-password-php.html
http://www.codingcage.com/2015/09/login-registration-email-verification-forgot-password-php.html
Ik heb hier vluchtig doorheen gelezen maar het gebruik van OOP is op sommige plekken tenenkrommend slecht eigenlijk :(.
Dit terwijl de auteur letterlijk zegt:
Quote:
advanced PHP Programming must follow proper Object Oriented(OOP) approach so i have used here OOP
Dit kan ook prima zonder OOP. OOP is een middel, geen doel.