Inlogsysteem 1 gebruiker

Door PHP Newbie, 18 jaar geleden, 6.760x bekeken

Met dit script kun je door middel van een include en 2 functies een inlogsysteem voor 1 gebruiker opzetten.

Dit komt van pas in een admin systeem waarbij er toch maar 1 gebruiker is en het zonde van de tijd is om steeds je inlogsysteem in het adminsysteem te gaan verwerken.

Het is een relatief simpel stukje code maar ik denk toch dat het voor veel mensen handig is en voor de beginners erg leerzaam. Het grote verschil met het hiervoor geposte script is dat je daar 3 pagina's nodig hebt die je allemaal een naam moet geven en die naam ook aan moet passen in het script, en je hier slechts de naam van het include-bestand en de include zelf aan hoeft te passen.

Hieronder vind je eerst de code. Daaronder een voorbeeldje van het gebruik.

Gesponsorde koppelingen

PHP script bestanden

  1. inlogsysteem-1-gebruiker

 

Er zijn 31 reacties op 'Inlogsysteem 1 gebruiker'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
RvW Of toch niet
RvW Of toch niet
18 jaar geleden
 
0 +1 -0 -1
ziet er goed uit!
Naam Loos
Naam Loos
18 jaar geleden
 
0 +1 -0 -1
Ziet er goed uit maar dit is al de 102e login op deze site!
PHP Newbie
PHP Newbie
18 jaar geleden
 
0 +1 -0 -1
Volgens mij heb ik aangegeven waarom deze anders is.
Dennis Mertens
Dennis Mertens
18 jaar geleden
 
0 +1 -0 -1
En volgens mij vind ik dat wel mee vallen.

Maak er anders nog een mooie classe van.
PHP Newbie
PHP Newbie
18 jaar geleden
 
0 +1 -0 -1
Zoek de meerwaarde van een classe. Die is er niet in dit geval. Wanneer je hier een classe van maakt is het eigenlijk gewoon een verzameling van functies.


18 jaar geleden
 
0 +1 -0 -1
En waarom is deze verzameling van functie's dan beter dan de rest wat al online is? Ik zie hier de meerwaarde niet echt van in. Volgens mij is dit even snel in elkaar geflanst om te laten zien wat je kunt.
PHP Newbie
PHP Newbie
18 jaar geleden
 
0 +1 -0 -1
Het voordeel van deze boven de rest is dat je deze alleen maar hoeft te includen en je dan een werkend inlogsysteem hebt. Je hebt het bestand include.login.php en als je ergens een inlogsysteem wilt hebben include je dat bestand en je plakt de code uit het voorbeeld in je pagina.

Je hoeft dus geen links aan te passen, je hoeft geen aparte pagina's aan te maken waar je ook weer je design om heen hoeft te plaatsen. Gewoon includen en draaien. En dan mag jij mij een script laten zien wat op een gelijkwaardige manier werkt en hier in de scriptlib staat.

Edit:
Karl:
Volgens mij is dit even snel in elkaar geflanst om te laten zien wat je kunt.


Gebruik het script zelf al tijden, het antwoord is dus nee. Verder hoef ik hier niet te laten zien wat ik kan. IK weet wat ik kan en gebruik die kennis om scripts mee te schrijven en hier op het forum mensen te helpen.
Roel -
Roel -
18 jaar geleden
 
0 +1 -0 -1
Waarom zou je md5 gebruiken voor 1 user...? Beetje overbodig lijkt mij
Pieter van Linschoten
Pieter van Linschoten
18 jaar geleden
 
0 +1 -0 -1
Kwestie van gewoonte denk ik ;)
PHP Newbie
PHP Newbie
18 jaar geleden
 
0 +1 -0 -1
Roel, dat doe ik om te voorkomen dat het wachtwoord direct in het bestand staat. Ik heb er nu staan md5('user'), maar daar hoort dus eigenlijk de hash zelf te staan. Zal het asap even aanpassen.
Lode
Lode
18 jaar geleden
 
0 +1 -0 -1
ik ben binnen no time binnen in dit script door alle $_SERVER vars die je blindelings gebruikt...

Wellicht wil je ook weten of session_start(); is aangeroepen vanwegen de dependancies...
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
if(isset($_SESSION)){
   //er is een sessie...
}
?>


Edit zie ergens empty(); dat voegt niks toe aan isset aleen dat het controleerd op '' wat je sneller doet in een string comparison volgens mij.
PHP Newbie
PHP Newbie
18 jaar geleden
 
0 +1 -0 -1
Lode:
ik ben binnen no time binnen in dit script door alle $_SERVER vars die je blindelings gebruikt...


Ik gebruik er 2, namelijk $_SERVER['SCRIPT_NAME'] welke altijd geset is en niet gecontroleerd hoeft te worden en $_SERVER['REMOTE_ADDR']. Wanneer jij op mijn server een sessie kunt zetten met daarin een md5 hash van je IP dan denk ik niet dat het beveiligingsgat in dit script zat.

Graag dus verdere uitleg, dan kan ik er wat mee.
Lode
Lode
18 jaar geleden
 
0 +1 -0 -1
XSS... deze vars zijn gevoelig voor XSS, omdat ze door de webserver doorgegeven worden welke ze weer via de browser verstuurd krijgen... Hierin kan je als ex hacker vrij gemakkelijk javascript e.d. injecteren...

dus je moet ze op z'n minst filteren...
Lode
Lode
18 jaar geleden
 
0 +1 -0 -1
is dat $_SERVER['REMOTE_ADDR'] wel een ip?
O shit ik krijg een bump kick...

(TMF term)
PHP Newbie
PHP Newbie
18 jaar geleden
 
0 +1 -0 -1
$_SERVER['SCRIPT_NAME'] is juist niet gevoelig voor XSS in tegenstelling tot $_SERVER['PHP_SELF']. $_SERVER['REMOTE_ADDR'] misschien wel (weet ik niet), maar laat ze daar maar inpompen wat ze willen. Enige wat ermee gebeurt is in een sessie gepompt wanneer de gebruikersnaam en het wachtwoord goed is. Eerder gebruik ik het niet.
Lode
Lode
18 jaar geleden
 
0 +1 -0 -1
veel plezier...
PHP Newbie
PHP Newbie
18 jaar geleden
 
0 +1 -0 -1
Jij hebt het over veiligheids lekken. Geef dan eens een concreet voorbeeld i.p.v. met termen te smijten zonder concrete voorbeelden. Daar heb ik niks aan.
Pieter van Linschoten
Pieter van Linschoten
18 jaar geleden
 
0 +1 -0 -1
Misschien is er wel iemand met een hamer en schroevendraaier die zo heel je kast met apparatuur kapot maakt... niet echt veilig dus.

;)
Jeffrey H
Jeffrey H
18 jaar geleden
 
0 +1 -0 -1
@lode:
Denk je dat je er verstand van hebt? Of zit je gewoon wat te gissen?
$_SERVER['SCRIPT_NAME'] word geset door de server, net zoals $_SERVER['REMOTE_ADDR']. PHP_Newbie heeft dit script simpel gemaakt, maar xss bestendig.
Quote:
is dat $_SERVER['REMOTE_ADDR'] wel een ip?
Ok... Zoals het spreekwoord luidt: "De beste stuurlui staan aan wal"


18 jaar geleden
 
0 +1 -0 -1
Ik zou toch graag nog eens de voordelen van dit script t.o.v. bijvoorbeeld deze of deze willen weten.
Je zegt dat het voordeel van dit script is dat je geen aparte pagina's hoeft te maken, omdat er al een inlogform in het script zit. Maar hoe zit het dan als je dit in je website wilt integreren? Dan lijkt me dat je juist wel het wilt vormgeven. Verder werken die andere scripts ook gewoon d.m.v. een include.
Dit script lijkt op een class, maar is het net niet, maar moet zich wel voordoen als class, zodat het lijkt dat het toegevoegde waarde heeft, maar de belangrijkste voordelen van dit script zijn juist tegen de OOP princiepes in.
PHP Newbie
PHP Newbie
18 jaar geleden
 
0 +1 -0 -1
Vormgeven kan prima. Het is een form met labels en de errors krijgen de class formError. Prima met CSS te stylen dus.

Dit script moet zich, zoals gezegd, helemaal niet voordoen als een class, want het is het simpelweg niet.

Bij de eerste link die je gaf citeer ik "Het is niet beveiligd voor session hacking enz..". Die 2e link die je gaf, daar heb je 3 pagina's nodig. Deze pagina's hebben allemaal een naam en die zul je aan moeten gaan passen.

Nogmaals: Het doel van dit script is op een simpele doch veilige manier op willekeurige pagina's een inlogsysteem toe te voegen. Geen pagina's aanmaken, geen links aanpassen. Gewooon includen en draaien.

Het script van Eris komt nog het meest in de buurt. Alleen is zijn script gevoelig session hijacking en moet je alsnog een inlogpagina aanmaken.
Rory S
Rory S
18 jaar geleden
 
0 +1 -0 -1
hey een vraagje ik PHP al 2 jaar maar 1 ding heb ik me nog nooit in verdiept :$

wat betekend bij function ifset(&$x, $y = null,$z=null) de & teken voor $x ?

Alvast bedankt :)
Louis Carty
Louis Carty
17 jaar geleden
 
0 +1 -0 -1
Is dit systeem eenvoudig uit te breiden voor meerdere gebruikers? Is er anders een recente inlogsysteem voor meerdere gebruikers beschikbaar?
Joni Fleischer
Joni Fleischer
17 jaar geleden
 
0 +1 -0 -1
Ongelooflijk dat als iemand een script maakt dat er alleen maar op gekankerd kan worden.

I.p.v dat je gewoon zegt wat er fout is en meteen een oplossing bied, maar dat zie ik ook niemand doen. Je plaatst hier een script om anderen ermee te helpen en te laten zien wat je kunt, dus ja KARL misschien heeft hij dat gedaan.

Is hier geen mod die de jankerds een waarschuwing kan geven of eruit kan flikkeren? misschien dat het dan een stuk gezelliger word en leuker word om je scripts op deze website te plaatsen.

Mijn god.. stelletje losers soms..
Joni Fleischer
Joni Fleischer
17 jaar geleden
 
0 +1 -0 -1
@ Louis Carty

Volgens mij (weet ik niet zeker) kun je het volgende doen:

toonInlogFormulier();

Die laat het inlogformulier zien.
Het stukje wat dan valideerd.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
 function validateInlogformulier($sUsername, $sPassword)
    {

        $aErrors = array();
        
        if($_SERVER['REQUEST_METHOD'] == 'POST') //wanneer er een post request is uitgevoerd
        {
            if(empty($_POST['username']))        { $aErrors['username']         = 'Geef een gebruikersnaam op'; } //checken we of er een username
            if(empty($_POST['password']))        { $aErrors['password']        = 'Geef een wachtwoord op'; } //en password is opgegeven
            
            if(empty($aErrors)) //zo ja
            {
                if($_POST['username'] == $sUsername && md5($_POST['password']) == $sPassword) //Is het de goede username en het goede password
                {
                    $_SESSION['loggedin'] = md5($_SERVER['REMOTE_ADDR']); //dan zetten we een sessie met een hash van het ip
                    header('Location: '.$_SERVER['SCRIPT_NAME']); //en redirecten we de user weer naar deze pagina
                    exit(); //er hoeft nu dus niets meer uitgevoerd te worden
                }
                else //is het een verkeerde combinatie
                {
                    $aErrors['global'] = 'Foutieve inloggegevens'; //dan zetten we dat in de error array
                }
            }

            
            return toonInlogFormulier($aErrors); //We tonen het inlogformulier opnieuw, ditmaal met (een) error(s)
        }
    }

?>


Kun je dan gaan veranderen naar SQL:
Een query maken die kijkt of de geposte username bestaat in de database en die gaan vergelijken met het geposte wachtwoord of die overeenkomt met diegene in de databse.
En dan het stukje:

$_SESSION['loggedin'] = md5($_SERVER['REMOTE_ADDR']); //dan zetten we een sessie met een hash van het ip
header('Location: '.$_SERVER['SCRIPT_NAME']); //en redirecten we de user weer naar deze pagina
exit(); //er hoeft nu dus niets meer uitgevoerd te worden

Laten uitvoeren.

Vergeef me dat ik geen sql voorbeeld geef, die ga ik nu zelf proberen te maken veilig en wel.

Maar zo ga ik dit script nu zelf gebruiken.
Ruben
Ruben
17 jaar geleden
 
0 +1 -0 -1
Dit inlogscript werkt!

Alleen 1 probleempje
Als ik ingelogd ben verschijnt mijn Header niet meer
Hoe verhelp ik dit?

En op welke regel kan je username en wachtwoord wijzigen?

Bedankt!
Toby hinloopen
toby hinloopen
17 jaar geleden
 
0 +1 -0 -1
ifset functie is best geinig bedacht
Ruben
Ruben
17 jaar geleden
 
0 +1 -0 -1
Oké nog een probleem

Je kan deze inlogfunctie alleen boven aan de pagina zetten of niet?
Ik heb nu een tabel op mijn pagina, maar als ik hem daar in zet zerkt hij niet meer.

En nog steeds weet ik niet waar ik username en password kan veranderen

Het probleem met de header is inmiddels opgelost
Michael -
Michael -
17 jaar geleden
 
0 +1 -0 -1
Kijk eens naar "Voorbeeld van gebruik:" en dan regel 8.
Wachtwoord omzetten naar md5.
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Joni Fleischer
Joni Fleischer
17 jaar geleden
 
0 +1 -0 -1
in principe kun je met login() de username en wachtwoord zetten.
Je moet alleen zelf ff een form maken waar je je wachtwoord omzet in md5.

Ik heb nu het volgende gedaan en het werkt :)
Misschien niet al te netjes, maar het is voor mezelf dus jah..
Heb me best gedaan.
Het is dus met een tabel users. mySQL...

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?php
function validateInlogformulier($sEmail, $sPassword)
    {

        $aErrors = array();
        
        if($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['actie']) && $_POST['actie'] == 'Inloggen') //wanneer er een post request is uitgevoerd
        {
            if(empty($_POST['email']))             { $aErrors['email']         = 'Geef een emailadres op'; } //checken we of er een email
            if(empty($_POST['password']))        { $aErrors['password']        = 'Geef een wachtwoord op'; } //en password is opgegeven
            
            if(empty($aErrors)) //zo ja
            {
              if(mysql_num_rows(mysql_query("SELECT email,status FROM users WHERE email = '".$sEmail."' AND status != 'non-actief'"))) // Kijken of emailadres wel bestaat
              {
                $validate = mysql_fetch_array(mysql_query("SELECT email,wachtwoord FROM users WHERE email = '".$sEmail."' AND status != 'non-actief'"));
                
                      if($validate['email'] == $sEmail && $validate['wachtwoord'] == md5($sPassword)) //Is het de goede username en het goede password
                    {
                        $_SESSION['loggedin'] = md5($_SERVER['REMOTE_ADDR']); //dan zetten we een sessie met een hash van het ip
                       $_SESSION['emailadres'] = $sEmail;
                          header('Location: '.$_SERVER['SCRIPT_NAME']); //en redirecten we de user weer naar deze pagina
                          exit(); //er hoeft nu dus niets meer uitgevoerd te worden
                    }
                    else //is het een verkeerde combinatie
                    {
                        $aErrors['global'] = 'Uw email en/of wachtwoord zijn incorrect.'; //dan zetten we dat in de error array
                      }
              }

              else
              {
                $aErrors['global'] = 'Uw emailadres komt niet voor in onze databse.'; //dan zetten we dat in de error array
              }
            }

            return toonInlogFormulier($aErrors); //We tonen het inlogformulier opnieuw, ditmaal met (een) error(s)
        }
    }

?>

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. inlogsysteem-1-gebruiker

Labels

  • Geen tags toegevoegd.

Navigatie

 
 

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.