• Inloggen
  • Registreer
  • Zoeken
Dit topic
  • Overal
  • Dit topic
  • Dit forum
  • Artikelen
  • Pagina's
  • Forum
  • Downloads
  • Meer opties

ICTscripters

Dé plek voor IT

Dé plek voor IT

Aanmelden

Geavanceerde opties
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
    3. Onopgeloste topics
  3. ICT Nieuws
  4. Blog
  5. Marktplaats
    1. Werk
    2. Advertenties
    3. Domeinnamen
    4. Websites
    5. Design & lay-outs
    6. Scripts
    7. Overige
  6. Design
  7. Leden
    1. Actieve bezoekers
    2. Team
    3. Leden zoeken
  8. Downloads
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
    3. Onopgeloste topics
  3. ICT Nieuws
  4. Blog
  5. Marktplaats
    1. Werk
    2. Advertenties
    3. Domeinnamen
    4. Websites
    5. Design & lay-outs
    6. Scripts
    7. Overige
  6. Design
  7. Leden
    1. Actieve bezoekers
    2. Team
    3. Leden zoeken
  8. Downloads
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
    3. Onopgeloste topics
  3. ICT Nieuws
  4. Blog
  5. Marktplaats
    1. Werk
    2. Advertenties
    3. Domeinnamen
    4. Websites
    5. Design & lay-outs
    6. Scripts
    7. Overige
  6. Design
  7. Leden
    1. Actieve bezoekers
    2. Team
    3. Leden zoeken
  8. Downloads
  1. Dé plek voor IT - ICTscripters
  2. Forum
  3. Scripting & programmeren
  4. PHP + SQL

Forum

  • Port Father: beta van een browsergame in Antwerpen 1931, feedback welkom

    Syntax 14 oktober 2026 om 16:04
  • Maffia Hotel: een browsergame waarin je van lobbygast naar spil van het hotel groeit

    Luc 13 oktober 2026 om 21:31
  • Crime Club volledig herschreven vanaf nul

    frio 13 oktober 2026 om 16:52
  • Herkent deze Notion-structuurscan echte problemen?

    FreelanceAP 6 oktober 2026 om 16:48
  • 🚀 WE ZOEKEN TESTERS! 🚀

    Servertjee 3 oktober 2026 om 10:56
  • Luchtvaartsoftware: Hoe technologie de moderne luchtvaart verandert

    saggy2829 30 september 2026 om 19:31
  • Hoe gebruiken jullie WhatsApp voor marketing en klantopvolging?

    aiqanobzfsej5 29 september 2026 om 12:55
  • [PROJECT] Gamekeuring.nl - Hét onafhankelijke keuringsplatform voor maffiagames & RPG's!

    frio 22 september 2026 om 16:40

Marktplaats

  • [TE KOOP] Likeboost24.nl: complete SMM-webshop met eigen merk, volautomatische levering en betalen op de eigen pagina

    frio 14 oktober 2026 om 15:06
  • Te koop: TuinKlussen.be, een kant-en-klaar platform voor tuinklussen in Vlaanderen en Brussel

    frio 13 oktober 2026 om 21:08
  • Te koop: Port Father, afgewerkt online maffiaspel in PHP/MySQL, klaar voor de Play Store

    frio 11 oktober 2026 om 14:02

Inlogsysteempje begin

  • Luc
  • 1 december 2009 om 20:38
  • Gesloten
  • Luc
    Software Engineer
    Berichten
    1.988
    • 1 december 2009 om 20:38
    • #1

    Beste leden,

    IK ben stap voor stap een veilig inlog systeem aan het schrijven. Per ding wat ik eraan verander vraag ik wat beter kan.

    Ik heb nu dit:

    PHP
    <?php
    
    
    function islogged()
    {
    	// controleer of de cookies bestaan
    
    
    	if(isset($_COOKIE['id'] && ctype_digit($_COOKIE['id']) && isset($_COOKIE['gebruikersnaam'])
    	{
    		// check of de sessie en cookies overeen komen
    
    
    		if(isset($_session['id'] == $_COOKIE['id'] && $_SESSION['ip'] == $_SERVER_REMOTE_ADDR && $_SESION['gebruikersnaam'] == $_COOKIE['gebruikersnaam'])
    		{
    
    
    		$gebruikersnaam = $mysqli_real_escape_string($_COOKIE['gebruikersnaam']);
    
    
    		$mysqli->query("SELECT gebruikersnaam FROM leden WHERE gebruikersnam='".$gebruikersnaam."'");
    
    
    	if($mysqli->num_rows == 1)
    	{
    		ingelogd
    
    
    	      return TRUE;
    		
    	}
    	else
    	{
    		uitgelogd
    	}
    }
    ?>
    Meer tonen

    Hopend dat u me hiermee wilt helpen.

    Met vriendelijke groet,

    Luc

    Website: https://devimo.nl
    Skype: https://join.skype.com/invite/dJyYILTt7Eqh

  • Gast, wil je besparen op je domeinnamen? (ad)
  • FrankY
    Another one bites the dust.
    Berichten
    598
    • 1 december 2009 om 20:46
    • #2

    Wat is de fout dan? Of toont hij geen fout?

    Bezig met cms:)

  • Luc
    Software Engineer
    Berichten
    1.988
    • 1 december 2009 om 20:49
    • #3

    Hij toont geen fout, ik heb het net ff snel geschreven en wou weten of dit beter kan:P

    Website: https://devimo.nl
    Skype: https://join.skype.com/invite/dJyYILTt7Eqh

  • CPbot
    CriminalsPoint.com
    Berichten
    411
    • 1 december 2009 om 21:18
    • #4
    PHP
    $mysqli->query("SELECT gebruikersnaam FROM leden WHERE gebruikersnam='".$gebruikersnaam."'");

    Kijk eens wat naar WHERE komt ;)

    Het bovenstaande bericht werd geplaatst door een lid waarvan het account verwijderd is.

  • Luc
    Software Engineer
    Berichten
    1.988
    • 1 december 2009 om 21:23
    • #5

    Ja even niet op typ fouten letten maar op beveiliging. Of dit zo veilig inlogsysteempje begin is of juist niet daar gaat het me om.

    Website: https://devimo.nl
    Skype: https://join.skype.com/invite/dJyYILTt7Eqh

  • CPbot
    CriminalsPoint.com
    Berichten
    411
    • 1 december 2009 om 21:26
    • #6

    Dan stuit je al op een probleem: Niets is veilig. :p

    Maar als je voor veiligheid kiest, waarom dan cookies en geen SESSIONS?

    Het bovenstaande bericht werd geplaatst door een lid waarvan het account verwijderd is.

  • Luc
    Software Engineer
    Berichten
    1.988
    • 1 december 2009 om 21:31
    • #7

    Wil het straks met beide gaan doen. Dus een sessie en cookie meegeven. Die allebij genereren en met elkaar vergelijken, kloppen ze en kun je dit alles terug vinden in de database, dan ben je ingelogd, anders uitgelogd. Zo wil ik het gaan maken. Maar weet niet of dit veilig genoeg is?

    Met vriendelijke groet,

    Luc

    Website: https://devimo.nl
    Skype: https://join.skype.com/invite/dJyYILTt7Eqh

  • MrMees
    De causeur!
    Berichten
    464
    • 1 december 2009 om 21:45
    • #8

    Je moet nog op IP checken.

    Verder kan je in de query LIMIT 1 zetten, dat is sneller. Je wilt toch weten of er 1 van bestaat?

    En ik snap xdigit niet, dan mag je alleen maar a-f en A-F. Beetje raar als een gebruikersnaam geen Z kan bevatten niet?

    Rembo&amp;amp;Rembo.

    http://www.criminalspoint.com/db/artikel/317.html

  • Luc
    Software Engineer
    Berichten
    1.988
    • 1 december 2009 om 21:46
    • #9

    Oke dankje gebrui ik andere functie voor. Ik ga het mogen eens goed uitwerken het is nu laat dus gat nu niet goed;)

    Website: https://devimo.nl
    Skype: https://join.skype.com/invite/dJyYILTt7Eqh

  • Niels
    -1
    Berichten
    1.360
    • 1 december 2009 om 21:51
    • #10
    PHP
    <?php
    
    
    Function islogged()
    {
        if(isset($_COOKIE['id']) && ctype_digit($_COOKIE['id']) && isset($_COOKIE['gebruikersnaam']) && ctype_xdigit($_COOKIE['gebruikersnaam']))
        {
    
    
            $mysqli->query("SELECT gebruikersnaam FROM leden WHERE gebruikersnam='".addslashes($_COOKIE['gebruikersnaam']));
    
    
        if($mysqli->num_rows == 1)
        {
            //ingelogd
    
    
            return TRUE;
            
        }
        else
        {
            uitgelogd
        }
    ?>
    Meer tonen

    Is alleen wel zo onveilig als wat aangezien je door middel van de cookie 'gebruikersnaam' te wijzigen toegang krijgt tot een ander account. Kijk eens naar sessies ;) Stukje veiliger op de manier zoals jij het wil doen.

    isset() kan trouwens meerdere waarden bevatten zegmaar dit:

    PHP
    isset($foo,$bar)

    -1

  • Frenzo
    Gast
    • 1 december 2009 om 21:53
    • #11

    gebruikersnam staat over al het is gebruikersnaam :)

  • Stefan.J
    Meester
    Berichten
    2.358
    • 1 december 2009 om 22:00
    • #12

    Wat Niels zegt inderdaad.

    Citaat

    Dan stuit je al op een probleem: Niets is veilig.

    Maar als je voor veiligheid kiest, waarom dan cookies en geen SESSIONS?


    Omdat sessies niet per definitie veiliger zijn? Bij goed gebruik van cookies kan dit heel veilig zijn.

    "Niets is veilig." Een volledig veilig systeem is bijna onmogelijk, maar een loginsysteem op zich: Moet lukken.

    [offtopic]Overigens waardeer ik dan wel heel erg dat je dit topic opent![/offtopic]

  • Luc
    Software Engineer
    Berichten
    1.988
    • 2 december 2009 om 07:42
    • #13

    Ik heb ondertussen het script wat vergroot.

    PHP
    <?php
    
    
    function islogged()
    {
    	// controleer of de cookies bestaan
    
    
    	if(isset($_COOKIE['id'] && ctype_digit($_COOKIE['id']) && isset($_COOKIE['gebruikersnaam'])
    	{
    		// check of de sessie en cookies overeen komen
    
    
    		if(isset($_session['id'] == $_COOKIE['id'] && $_SESSION['ip'] == $_SERVER_REMOTE_ADDR && $_SESION['gebruikersnaam'] == $_COOKIE['gebruikersnaam'])
    		{
    
    
    		$gebruikersnaam = $mysqli_real_escape_string($_COOKIE['gebruikersnaam']);
    
    
    		$mysqli->query("SELECT gebruikersnaam FROM leden WHERE gebruikersnaam='".$gebruikersnaam."'");
    
    
    	if($mysqli->num_rows == 1)
    	{
    		ingelogd
    
    
    	      return TRUE;
    		
    	}
    	else
    	{
    		uitgelogd
    	}
    }
    ?>
    Meer tonen

    Is dit al beter? En wat kan ik er verder nog aan toevoegen waardoor het veiliger word.

    Met vriendelijke groet,

    Luc

    Nieuwe reactie samengevoegd met originele reactie op 02.12.09 09:05:06:

    PHP
    <?php
    
    
    function islogged()
    {
    	// controleer of de cookies bestaan
    
    
    	if(isset($_COOKIE['id'] && ctype_digit($_COOKIE['id']) && isset($_COOKIE['gebruikersnaam'])
    	{
    		// check of de sessie en cookies overeen komen
    
    
    		if(isset($_SESSION['id'] && ctype_digit($_SESSION['id']) && isset($_SESSION['gebruikersnaam'])
    		{
    			// controleer of ze gelijk zijn aan elkaar
    
    
    			if($_session['id'] == $_COOKIE['id'] && $_SESSION['ip'] == $_SERVER_REMOTE_ADDR && $_SESION['gebruikersnaam'] == $_COOKIE['gebruikersnaam'])
    			{
    
    
    				$gebruikersnaam = $mysqli_real_escape_string($_COOKIE['gebruikersnaam']);
    
    
    				$check = $mysqli->query("SELECT ID,IP,gebruikersnaam,datum FROM online WHERE gebruikersnaam='".$gebruikersnaam."'");
    			
    				if($check->num_rows == 1)
    				{
    					$speler = $check->fetch_assoc();
    					if($speler['IP'] == $_SESSION['ip'] && $speler['ID'] == $_SESSION['ID'])
    					{
    						// ingelogd
    						RETURN TRUE;
    					}
    					else
    					{
    						// uitgelogd
    						RETURN FALSE;
    					}
    			
    				}
    			}
    		}
    	}
    }
    			
    	
    ?>
    Meer tonen

    Zoiets zalegt wel veilig moeten zijn lijkt me. Maargoed hoe kan ik dit beter maken?

    Met vriendelijke groet,

    Luc

    Website: https://devimo.nl
    Skype: https://join.skype.com/invite/dJyYILTt7Eqh

  • Darsstar
    Vreemd
    Berichten
    1.173
    • 2 december 2009 om 16:45
    • #14

    De errors er uit halen?
    isset($_SESSION['id'] &&
    je vergeet isset() af te sluiten... (niet alleen daar)

    PHP
    if(isset($_COOKIE['id']) && ctype_digit($_COOKIE['id']) && isset($_COOKIE['gebruikersnaam']))
    // kan korter als:
    if(isset($_COOKIE['id'], $_COOKIE['gebruikersnaam']) && ctype_digit($_COOKIE['id']))
    // zoals niels dus al zei...

    de else die false returned weg halen...
    en de "return FALSE;" net op het einde van de functie zetten... (niet in een if)

    De datum en gebruikersnaam niet uit de database selecteren...

    Zodra je ingelogd bent (je login script) session_regenerate_id() aanroepen...

    Zorgen dat je $mysqli ook echt bestaat...

    de $ voor mysql_real_escape_string($_COOKIE['gebruikersnaam']) weghalen...

    $_SERVER_REMOTE_ADDR veranderen in $_SERVER['REMOTE_ADDR']

    Op id selecteren, niet op gebruikersnaam...
    Ook vind ik het geen goed idee om de gebruikersnaam in de cookie en sessie op te slaan, het id is genoeg...
    Wil je nog een extra waarde neem dan de hash van iets... (ip + browser + id + datum geregistreerd bijvoorbeeld)

    $_session['id'] met hoofd letters schijven...
    consequent blijven is trouwens ook wel handig... ($_SESSION['id'] en $_SESSION['ID'] zijn verschillende variabelen)

    miauw!

  • MrMees
    De causeur!
    Berichten
    464
    • 2 december 2009 om 17:28
    • #15

    Darsstar: Wat maakt het verschil tussen op ID of op naam selecteren?

    Rembo&amp;amp;Rembo.

    http://www.criminalspoint.com/db/artikel/317.html

  • Stefan.J
    Meester
    Berichten
    2.358
    • 2 december 2009 om 17:45
    • #16

    Selecteren op ID is veel sneller. Dit omdat getallen al sneller werken, en daarbij de ID normaal de PRIMARY KEY is. Wil je iets selecteren uit een tabel, is de PRIMARY KEY altijd de snelste optie: Dit heeft te maken met de manier waarop MySQL de boel opslaat.

  • MrMees
    De causeur!
    Berichten
    464
    • 2 december 2009 om 17:57
    • #17

    Ok, dat wist ik niet bedankt!

    Rembo&amp;amp;Rembo.

    http://www.criminalspoint.com/db/artikel/317.html

  • Darsstar
    Vreemd
    Berichten
    1.173
    • 2 december 2009 om 18:34
    • #18
    Citaat van MrMees

    Darsstar: Wat maakt het verschil tussen op ID of op naam selecteren?


    Verder is het ook een beetje vreemd als je een uniek veld hebt voor een bepaalde user dat niet hoort te veranderen (gericht aan iedereen die het zou kunnen veranderen in de database) en een ander veld gebruikt om users te identificeren...
    Zeker wanneer je bedenkt waar id voor staat!

    Even logisch nadenken kan soms al veel opleveren :p

    miauw!

Registratie

Nog geen account? Registreer je nu en word deel van onze community!

Nu registreren Aanmelden

Blogs

  • Functioneel ontwerp

    Dees 28 december 2014 om 12:38
  • Access Control List implementatie in PHP/MySQL - deel 1/2

    FangorN 28 december 2018 om 12:35
  • Access Control List implementatie in PHP/MySQL - deel 2/2

    FangorN 29 december 2018 om 12:37

Gebruikers die dit topic bekijken

  • 2 Gasten
  1. Marktplaats
  2. Design
  3. Voorwaarden
  4. Ons team
  5. Leden
  6. Geschiedenis
  7. Regels
  8. Links
  9. Privacyverklaring
  10. Contact
ICTscripters ©2005 - 2026 , goedkope hosting door DiMoWeb.com, BE0558.915.582
Sponsors: Beste kattenhotel provincie Antwerpen
Style: Nexus by cls-design
Stylename
Nexus
Manufacturer
cls-design
Licence
Commercial styles
Help
Supportforum
Visit cls-design