Inlog systeem maken

Status
Niet open voor verdere reacties.

gast0446

Gebruiker
Lid geworden
29 dec 2009
Berichten
373
Hallo allemaal,

Ik heb dit script voor een inlog systeem, maar het systeem doet het niet.

PHP:
<?php
session_start();

    $aErrors = array();
    //  Maak een verbinding met de database
    
	include('mysqlgegevens.php');
	
    //  Controleer of het gelukt is
    if ( $rLink === false ) {
      $aErrors[] = 'De database is onbereikbaar. Probeer het later opnieuw.';
    }
    else {
      //  Selecteer je database
    $bSelected = mysql_select_db( 'loginsysteem', $rLink );
      //  Controleer of het gelukt is
      if ( $bSelected === false ) {
        $aErrors[] = 'De database is niet geselecteerd. Probeer het later opnieuw.';
      }
      else {
		$sQuery = "
			SELECT 
		  	username
		  , password
		FROM 
		  loginsysteem 
		WHERE
		  username = '".mysql_real_escape_string($_POST['gebruikersnaam'])."'
		AND 
		  password = '".sha1($_POST['wachtwoord'])."';";
		  
		//  Stuur de opdracht op
        $rResult = mysql_query( $sQuery, $rLink );
        //  Controleer of het gelukt is
        if ( $rResult === false ) {
          $aErrors[] = 'Het is niet gelukt om de gegevens op te halen';
        }
	}
}
  
if ($_SERVER['REQUEST_METHOD']=='POST' and $_GET['cmd']=='login')
{
    if ($_POST['login'] == $username and $_POST['wachtwoord'] == $password )
    {
        $_SESSION['inlogdata']['ingelogd']=1;
        $_SESSION['inlogdata']['remote_addr'] = $_SERVER['REMOTE_ADDR'];
    }	
}

if (isset($_GET['cmd']) and $_GET['cmd']=='logout')
{
    $_SESSION['inlogdata']['ingelogd']=0;
    $_SESSION['inlogdata']['remote_addr']='';
}


if (isset($_SESSION['inlogdata']['ingelogd']) and isset($_SESSION['inlogdata']['remote_addr']) and $_SESSION['inlogdata']['ingelogd']==1 and $_SESSION['inlogdata']['remote_addr']==$_SERVER['REMOTE_ADDR'])
{
    echo 'Gebruiker is ingelogd.<br />';
    echo '<a href="?cmd=logout">uitloggen</a>';
}
else
{
    // Als de gebruiker wel als ingelogd staat aangemerkt, maar het ip adres niet overeenkomt, dan wordt er mogelijk gehijackt
    if ($_SESSION['inlogdata']['ingelogd']==1 and $_SESSION['inlogdata']['remote_addr']!=$_SERVER['REMOTE_ADDR'])
    {
        echo 'Mogelijke hijack!';
    }
    echo 'Gebruiker is niet ingelogd.<br />';
    echo '<form method="post" action="?cmd=login">
	login: <input name="login" type="text"/><br />
	wachtwoord: <input name="wachtwoord" type="password"/><br />
<input type="submit" value="inloggen"/>
</form>';
}
?>

Kan iemand mij vertellen waarom het systeem het niet doet en hoe ik dit kan verhelpen?

Alvast bedankt!

gast0446
 
krijg je nog een van je foutmeldingen terug om een indicatie te geven waar het ongeveer fout gaat?
 
Ik krijg geen foutmelding.

Het lukt niet om het wachtwoord dat je in typt te vergelijken met dat in de MySQL database.
Dus als ik op login druk krijg ik simpel weg de melding dat het inloggen niet is gelukt omdat het wachtwoord niet overeen komt.
 
dat is dan dus de foutmelding ;)
ik heb goede ervaring met md5 hash ipv sha1, probeer dat eens, ook het wachtwoord in de loginsysteem moet in de hash zijn he?
 
misschien kun je beter een systeem maken dat de username en de password hash vergelijkt met de records en dan een array met userid's terugstuurt dat overeenkomt met deze gegevens. als je deze telt zul je dus een 1 of null terugverwachten. hier mee kun je vast verder :)
 
Ik zelf nog even verder gekeken, en ik krijg wel degelijk een melding als ik de error gehalte wat hoger zet.
Ik krijg dan de melding dat het variabele $username en $password leeg zijn.
Ik heb het nu over de variabele dit stukje in de php code, het zou de gegevens die je invult moeten versturen:

PHP:
if ($_POST['login'] == $username and $_POST['wachtwoord'] == $password )
    {
        $_SESSION['inlogdata']['ingelogd']=1;
        $_SESSION['inlogdata']['remote_addr'] = $_SERVER['REMOTE_ADDR'];
    }

Weet iemand hoe ik deze kan invullen waardoor ze wel iets naar de database sturen?
 
Laatst bewerkt:
misschien de HTML voor het login script zetten? ook hoef je de form niet via php te printen, je kan gewoon <?php if(loggedin == false){ ?><form></form><?php }else{} ?>
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan