• Login
  • Register
  • Zoek
This Thread
  • Everywhere
  • This Thread
  • This Forum
  • Articles
  • Pages
  • Forum
  • Filebase Entry
  • More Options

ICTscripters

Dé plek voor IT

Dé plek voor IT

Login

Geavanceerde opties
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
  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
  9. Goedkope domeinnamen
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
  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
  9. Goedkope domeinnamen
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
  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
  9. Goedkope domeinnamen
  1. Dé plek voor IT - ICTscripters
  2. Forum
  3. Scripting & programmeren
  4. PHP + SQL

Forum

  • Beta-testers gezocht voor Crypto-oefenplatform

    Syntax 29 januari 2026 om 16:11
  • Na 15 jaar terug van weggeweest: iCriminals.nl is terug (BETA)!

    Syntax 19 januari 2026 om 09:34
  • Developer Gezocht

    Mikevdk 10 januari 2026 om 18:57
  • Op zoek naar de legends

    Syntax 5 januari 2026 om 13:50
  • [FREE] WeFact Hosting module

    Jeroen.G 13 oktober 2025 om 14:09
  • Help testers nodig voor android app Urgent

    urgentotservices 26 september 2025 om 10:21
  • Versio vervanger

    Jeroen.G 25 augustus 2025 om 15:56
  • Afspraken systeem met planbeperking

    Lijno 1 augustus 2025 om 23:04

Marktplaats

  • 350 Nieuwe Domeinnamen Januari 2026

    shiga 1 februari 2026 om 14:21
  • 321 Nieuwe Domeinnamen December 2025

    shiga 1 januari 2026 om 10:26
  • Meerdere mafia game template te koop

    Syntax 26 december 2025 om 00:07

Inlogsysteempje begin

  • Luc
  • 1 december 2009 om 20:38
  • Closed
  • Luc
    Software Engineer
    Ontvangen Reacties
    44
    Berichten
    1.986
    • 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
    	}
    }
    ?>
    Toon Meer

    Hopend dat u me hiermee wilt helpen.

    Met vriendelijke groet,

    Luc

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

  • FrankY
    Another one bites the dust.
    Ontvangen Reacties
    3
    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
    Ontvangen Reacties
    44
    Berichten
    1.986
    • 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
    Ontvangen Reacties
    44
    Berichten
    1.986
    • 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
    Ontvangen Reacties
    44
    Berichten
    1.986
    • 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
    Ontvangen Reacties
    44
    Berichten
    1.986
    • 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
        }
    ?>
    Toon Meer

    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
    Guest
    • 1 december 2009 om 21:53
    • #11

    gebruikersnam staat over al het is gebruikersnaam :)

  • Stefan.J
    Master
    Ontvangen Reacties
    9
    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
    Ontvangen Reacties
    44
    Berichten
    1.986
    • 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
    	}
    }
    ?>
    Toon Meer

    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;
    					}
    			
    				}
    			}
    		}
    	}
    }
    			
    	
    ?>
    Toon Meer

    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
    Master
    Ontvangen Reacties
    9
    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!

Participate now!

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

Maak een account aan Login

ICT Nieuws

  • Fijne feestdagen

    tcbhome 28 december 2025 om 13:55
  • Kritieke update voor Really Simple Security-plug-in

    K.Rens 16 november 2024 om 16:12
  • ING Nederland streeft naar ondersteuning van Google Pay tegen eind februari

    K.Rens 2 november 2024 om 16:09

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
  1. Marktplaats
  2. Design
  3. Voorwaarden
  4. Ons team
  5. Leden
  6. Geschiedenis
  7. Regels
  8. Links
  9. Privacy Policy
ICTscripters ©2005 - 2026 , goedkope hosting door DiMoWeb.com, BE0558.915.582
Sponsors: Beste kattenhotel provincie Antwerpen | Beste Zetes eid kaartlezer webshop
Style: Nexus by cls-design
Stylename
Nexus
Manufacturer
cls-design
Licence
Commercial styles
Help
Supportforum
Visit cls-design