Ga naar inhoud

inlog scherm


anoniem

Aanbevolen berichten

ik zou graag een inlogscherm willen maken, waar gebruikers zich kunnen inloggen, de gebruikersnaam en wachtwoord hoeven ze niet zelf aan te kunnen maken. ik zou dit wel kunnen doen met JS bijvoorbeeld maar dan moet ik voor elke gebruiker een nieuw html homepage maken waar hij op inlogt. het moet vast makkelijker kunnen ofniet? mijn vraag is dus hoe. ik wil dus een hoofd scherm waar iemand kan inloggen dmv een form in te vullen. en dat elke gebruiker zijn eigen home page kan krijgen. is dit mogelijk zonder database te gebruiken.
Link naar reactie
Met een database is het efficienter, veiliger en beter. Maar om je vraag te beantwoorden: ja, dat kan ook zonder database. Toevallig heb ik een paar weken geleden iets dergelijks heel globaal opgezet voor iemand die niet de beschikking had over een database, met de data gewoon in een tekstbestand. Maar er komt wel het een en ander bij kijken. Dat dingetje dat ik had gebouwd geeft gebruikers niet eens een eigen homepage en het is heel basic alleen het strict noodzakelijke. De readme die ik erbij heb gemaakt verklaard een en ander over de werking, wellicht helpt het je om zelf iets te bouwen: DE WERKING ================================================= - De gebruiker komt binnen bij het login formulier - Na verzenden checked het script login.php of de ingevulde gegevens matchen met een user uit het bestand users.config - Zo nee, dan wordt er doorgestuurd naar error.html - Zo ja, dan wordt er een vlag gezet en doorgestuurd naar welkom.php - welkom.php en alle andere pagina's die beginnen met <?php require ('sessioncheck.php'); ?> checken eerst of de vlag wel is gezet voordat ze getoond worden - Blijkt de vlag niet gezet, dan wordt er alsnog doorgestuurd naar error,html DE BESTANDEN =================================================== loginform.html --------------- HTML invul formulier met naam en wachtwoord login.php --------------- Leest data uit formulier (loginform.html) Leest data uit de gebruikerslijst (users.config) Kijkt of de ingevulde naam en wachtwoord in loginform.html overeenkomt met een user uit users.config Zo nee, dan wordt de boel doorgezet naar error.html Zo ja, dan wordt er een sessie geopend ('vlag gezet') en doorgestuurd naar de beveiligde pagina users.config --------------- Kommagescheiden tekstbestand met gebruikersnamen en wachtwoorden. B.v. jdevries,asbak123 akoopmans,!SuperSonic (Dit bestand is gewoon met kladblok te bewerken. Wel oppassen dat het met de juiste naam wordt opgeslagen. Kladblok/notepad wil er nog wel eens eigenwijs .txt achter zetten) sessioncheck.php --------------- Wordt aangeroepen door de beveiligde pagina's Checked eerst of er wel een sessie openstaat ('vlag is gezet') voor de huidige bezoeker Zo nee dan wordt de boel doorgezet naar error.html Zo ja, dan wordt de pagina gewoon getoond welkom.php --------------- Een gewone HTML pagina met als enige verschil dat helemaal bovenin het script sessioncheck.php wordt aangeroepen. Dit gebeurt mbv de regel <?php require ('sessioncheck.php'); ?>. Deze regel bepaald of de pagina tot het "afgeschermde gebied" behoord of niet. Want een gewone HTML pagina waar geen sessioncheck.php wordt aangeroepen, is uiteraard gewoon voor elke buitenstaander zichtbaar. error.html --------------- Een gewone HTML pagina met een error tekst zoals b.v.: "Sorry, u heeft geen toegang" EXTRA INFORMATIE =================================================== Er wordt gebruik gemaakt van PHP. Dat betekent dat dit alleen kan draaien op een webserver die PHP ondersteund. Dit is een heel basic setup met alleen het hoognodige om afgeschermde pagina's te maken. Daarom zijn er enkele beperkingen De belangrijkste zijn: - Alle users hebben hetzelfde profiel. Je kunt dus inloggen of niet, maar er is geen hierarchie tussen de verschillende users. - Het beheren van de users gebeurt door simpelweg het bestand users.config te downloaden via FTP, dit aan te passen in kladblok, en weer te uploaden. (Vergeet geen reserve backup te maken voordat je iets wijzigd) - Het wachtwoord wordt onversleuteld over internet gestuurd. Het wachtwoord is welliswaar op geen enkele manier zichtbaar in de (broncode van de) website, maar een 'echte' hacker kan een wachtwoord eventueel onderscheppen als hij je dataverkeer onderschept en gaat analyseren. Deze beveiliging is dus absoluut niet geschikt om bijvoorbeeld financiele transacties etc. online uit te gaan voeren. Daar is dit ook niet voor bedoeld.
Link naar reactie
ben al weer een stukje verder. heb nu door middel van sessions een tijdelijk beschikbare pagina gemaakt. en nu moet er nog een wachtwoord beveiliging op. want het die input haalt nu niks uit. wat ook nog moet is kijken welke gebruiker er is e afhankelijk daarvan de goede include openen, of moet dit anders mijn code is dit: )heb er wat comments bijgeplaatst zodat het voor jullie misschien makkelijker te lezen is). [code:1:8673f7624e] <html> <body> <form action='login.php' method='post' /> username: <input name='naam' type='text' /><br /> password: <input name='pass' type='password' /><br /> <input type='submit' value='login' /><br /> </form> </body> </html> [/code:1:8673f7624e] mijn login.php ziet er zo uit: [code:1:8673f7624e] <?php $gebruiker = $_POST['naam'];//een variabele opzetten die in het if statement hieronder nodig is! $wachtwoord = $_POST['pass']; if ($gebruiker == "valentijn" || $gebruiker == "harrie" || $gebruiker == "inge" || $gebruiker == "pieter" ) //gewoon wet random namen! { session_start(); //dan moet de sessie gestard worden! $_SESSION['gebruiker'] = $gebruiker; //even wat sessie variabelen aanmaken. $_SESSION['wachtwoord'] = $wachtwoord; echo "je bent ingelogd, <a href='holtsession.php'>click</a> om verder te gaan!"; //als laatste opdracht moet php de link laten zien om op de persoonlijke pagina te komen! } else { //anders meld niet ingelogd echo "niet ingelogd"; } ?> [/code:1:8673f7624e] mijn holtsession is dit: [code:1:8673f7624e] <?php session_start(); if (!$_SESSION['gebruiker'] == "") //als de vorige sessie met $_SESSION goed heeft onthouden wie er ingelogd is is gebruiker dus wat anders dan niks en komt hij verder! { echo "welkom " .$_SESSION['gebruiker']; //laat de naam van de gebruiker zien zodat hij weet dat hij is ingelogd! (hier kan later een include komen); } else { echo "not logged in"; // als gebruiker niks is dus de vorige sessie niet goed heeft onthouden kan je niet inloggen en is deze pagina beschermt! } ?> [/code:1:8673f7624e] dit holt session heb ik gemaakt om te checken of ik een gebruiker ingelogd kan houden over meerdere paginas (dit lukte al :)) verder ben ik met php redelijk noob dus de meeste termen snap ik niet echt!
Link naar reactie
Super dat je zelf aan de slag bent gegaan. Het kan een stuk beter, maar het begin is er :) Ik zou de users wel uit je login script houden, want anders moet je dat steeds gaan bewerken om users aan te passen. Om je een stukje op weg te helpen zal ik mijn login.php hieronder posten, voorzien van uitgebreide commentaren. Deze maakt dus wel gebruik van het bestand users.config, wat dus in feite gewoon een tekstbestandje is, waar je .config ipv .txt achter zet. (.txt zou ook kunnen hoor, maar dan moet je login.php aanpassen, zodat hij het juiste bestand laadt) Leuk idee trouwens om de user in een sessievariabele te onthouden, dat is bij mij niet het geval, maar uitaraard redelijk gemakkelijk in te bouwen. Komt ie (jammer dat het forum geen syntax highlighting ondersteund) [code:1:5a2536a8f0]<?php /* Dit script wordt benaderd door loginform.html. We gaan dus eerst de data uit dat formulier ophalen en in variabelen stoppen In het html formulier gebruik je de method 'POST' en de velden 'naam' en 'passwd' en dat gebruiken we nu om die data in variabelen te stoppen */ $naam = $_POST['naam']; $passwd = $_POST['passwd']; /* Nu we de gegevens uit het formulier hebben opgehaald, moeten we ook de users en wachtwoorden ophalen uit het bestand users.config */ $userdata = file('users.config'); /* De usernamen en wachtwoorden zitten nu in de variabale '$userdata', maar dit is nog ruwe bulk data waar we nog niet zoveel mee kunnen. We moeten de boel eerst een beetje structureren We starten daarom eerst een loop die user-voor-user door de data heen loopt */ foreach ($userdata as $userline) { /* We zitten nu in de loop en variabele $userline bevat nu naam en wachtwoord van één user We gaan naam en wachtwoord van elkaar scheiden m.b.v. de komma die er tussen staat (En we halen meteen eventueel onbedoelde spaties uit het wachtwoord) */ $user = explode(",", $userline); $user_name = $user[0]; $user_password = trim($user[1]); /* We kunnen nu een check gaan doen door $naam en $passwd (uit formulier) et $user_name en $user_password (uit users.config) te vergelijken */ if ($naam == $user_name and $passwd == $user_password) { /* Ja! Naam is goed EN wachtwoord is goed! We hebben een match! start een sessie (hijs de vlag 'active'), en ga door naar welkom.php */ session_start(); $_SESSION ['active'] = true; header('Location: welkom.php'); exit(); } } /* Einde van de loop. */ /* Als we helemaal hier komen is er tijdens de loop dus niets gevonden dus we gaan door naar de errorpagina*/ header('Location: error.html'); ?>[/code:1:5a2536a8f0] en de session check die door de 'beveiligde' pagina's wordt aangeroepen ziet er zo uit: [code:1:5a2536a8f0]<?php /* Dit bestand is alleen bedoeld om aangeroepen te worden door beveiligde pagina's en niet om zelfstandig te draaien. Het checked of er in login.php een vlag is gezet. Zo nee, dan stuurt hij de gebruiker door naar error.html Zo ja, dan doet hij niets (en kan de betreffende pagina die dit script heeft aangeroepen dus onverstoord zijn gang gaan) */ session_start(); if (!$_SESSION ['active']) { header('Location: error.html'); exit(); } ?>[/code:1:5a2536a8f0]
Link naar reactie
yeeh het is gelukt met het user.config bestandje. nu wil ik nog een persoonlijke pagina kunnen laden. ik heb een testje gedaan of ik aan een variabele een "lokation: iets.html" kan hangen en daarna die variabele in een header. zie: [code:1:8d765b2bec] echo"succesvol ingelogd, " .$_SESSION['gebruiker'] ."!"; //echo"<form action='logout.php'><input type='submit' value='log uit' /></form>"; $persoonlijkepagina = 'Lokation: persoon1.html' header ("$persoonlijkepagina"); [/code:1:8d765b2bec] uiteindelijk moet die string "lokation: persoon1.html" dan als derde in het user.config bestandje komen. maar dit werkt dus niet, is er een andere vergelijkbare manier om dit te doen. door dus de string van de lokatie in de user.config te zetten en daarna die aan te roepen met een variabele ofzo. in die persoon1.html moet dan bovenin wel (require-sessioncheck.php) komen. ik hoop dat iets vergelijkbaars mogelijk is. Gooly, tot zover (voor dat ik het vergeet) SUPER bedankt zonder de uitleg was ik niet zo ver gekomen! :)
Link naar reactie
Als je de gebruiker wilt onthouden kun je dat doen op het moment dat de sessie wordt geopend. Bijvoorbeeld: [code:1:77216908e8] session_start(); $_SESSION ['active'] = true; header('Location: welkom.php'); [/code:1:77216908e8] wordt dan [code:1:77216908e8] session_start(); $_SESSION ['active'] = true; $_SESSION ['gebruiker'] = $user_name; header('Location: welkom.php'); [/code:1:77216908e8] Dat met die persoonlijke pagina is wel mogelijk (zoals mikesmikkel ook al zegt: wel met 'location'), maar zelf zou ik het niet zo doen. Want dan zit je nog voor elke gebruiker een aparte pagina aan te maken. Wat meestal gebeurt is dat voor zo'n gebruiker niet alleen zijn naam en wachtwoord worden onthouden, maar ook eventuele opties op de website. Vervolgens maakt men dan één generieke pagina, waar je alle elementen die dynamisch (veranderlijk) zijn, dan vervangt voor een stukje code dat opzoekt wat deze gebruiker op die plek heeft staan. De opzet is dan bijvoorbeeld: [b:77216908e8] Hallo [gebruikernaam] [persoonlijk welkomsbericht] De laatste keer dat je inlogde was [laatstelogindatum] [/b:77216908e8] En dat welkomstbericht en laatste logindatum zijn dan min of meer op dezelfde manier opgeslagen als zijn naam en wachtwoord. In dit geval zou die users.config er dan bijvoorbeeld uitzien als" jdevries,asbak123,Hallo Jan! Leuk dat je er bent,20120302 akoopmans,!SuperSonic,Welkom! Gezellig dat je er bent,20120215 Dat is heel globaal de manier zoals zoiets meestal wordt opgelost.
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

×
×
  • Nieuwe aanmaken...