Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Webprogrammeren & scripting

inlog scherm

None
10 antwoorden
  • 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.
  • 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.
  • dit is inderdaad redelijk lastig. als ik dit nu wel met een database doe is het dan veel moeilijker of niet. anders kan ik dat misschien beter meteen doen.
  • 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!
  • 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]
  • 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! :)
  • Het is trouwens wel Lo[b:e3a796190f]c[/b:e3a796190f]ation en niet Lo[b:e3a796190f]k[/b:e3a796190f]ation.
  • ja, maar dit doe ik wel goed in het script.
    heb je een idee hoe ik dit moet doen?
  • 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.
  • ik ben nu wel klaar, en heb voor elkaar wat ik wilde. super bedankt in iedergeval. zonder jullie hulp was het niet gelukt!

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.