Hallo,

Ik heb een login module gemaakt welke gelinkt is aan mijn database in phpmyadmin. Ik kan al registreren, de gegevens komen dan in de database. Alleen het lukt mij niet om in te loggen, hij geeft dan telkens: Foute gebruikersnaam of wachtwoord. Je moet inloggen met een toegewezen klantnummer en een zelf gekozen wachtwoord.
Het is op zijn minst zeker interessant om de relevante code van je login-module te delen.
Want zonder code kunnen we honderd oorzaken bedenken waardoor het inloggen niet werkt.
<?php
session_start(); ob_start();
require_once 'db_config.php';
if(isset($_POST['submit'])) {
try {
$sQuery = "SELECT * FROM klanten WHERE Klantnummer = ?";
$oStmt = $db->prepare($sQuery);
$oStmt->bindValue(1, $_POST['Klantnummer']);
$oStmt->execute();
$rij = $oStmt->fetch(PDO::FETCH_ASSOC);

if(password_verify($_POST['Wachtwoord'],$rij['Wachtwoord'])) {
$_SESSION['klogin'] = true;
$_SESSION['Klantnummer'] = $rij['Klantnummer'];
$_SESSION['Naam'] = $rij['Voornaam'];
header('Refresh: 0; url=ingelogd.php');

}
else
{
header('Refresh 1: url=home.html');
echo 'Onjuiste combinatie';
}
}
catch(PDHException $e)
{
$sMsg = '<p>
Regelnummer: '.$e->getLine().'<br />
Bestand: '.$e->getFile().'<br />
Foutmelding: '.$e->getMessage().'
</p>';

trigger_error($sMsg);
}
$db = null;
}
else
{
header('Location: home.php');
exit();
}
?>


Toevoeging op 29/03/2016 11:56:57:

Hij doet het nu wel. Ik kan inloggen alleen het lijkt wel alsof hij alleen maar checkt of de combinatie klantnummer-wachtwoord klopt, want als ik opnieuw naar het inlogscherm ga moet ik weer opnieuw inloggen
Hoe sla jij je passwords op?
<?php
$rij = $oStmt->fetch(PDO::FETCH_ASSOC);
?>

Is er altijd een resultaat?

Zoek de verschillen:
<?php
header('Refresh: 0; url=ingelogd.php');
header('Refresh 1: url=home.html');
?>

En waarom niet gewoon header('Location: ...'); in combinatie met een exit; ?

want als ik opnieuw naar het inlogscherm ga moet ik weer opnieuw inloggen

Je controleert ook nergens of je al ingelogd bent?
Thomas van den Heuvel op 29/03/2016 13:29:58

<?php
$rij = $oStmt->fetch(PDO::FETCH_ASSOC);
?>

Is er altijd een resultaat?

Zoek de verschillen:
<?php
header('Refresh: 0; url=ingelogd.php');
header('Refresh 1: url=home.html');
?>

En waarom niet gewoon header('Location: ...'); in combinatie met een exit; ?

want als ik opnieuw naar het inlogscherm ga moet ik weer opnieuw inloggen

Je controleert ook nergens of je al ingelogd bent?


Je hebt gelijk, weet je misschien hoe ik dat kan doen? Het controleren



Toevoeging op 30/03/2016 11:28:48:

Weet iemand misschien hoe ik dit op kan lossen?
Je hebt gelijk, weet je misschien hoe ik dat kan doen? Het controleren

Dat doe je middels de gegevens die je hebt ingesteld tijdens de inlog. Het enige wat je in principe bij hoeft te houden is een user id, of in jouw geval een klantnummer. De naam is afleidbaar, en "klogin" is nogmaals een expliciet (maar overbodig) veld dat aangeeft dat iemand is ingelogd.

Een controle op het ingelogd zijn is dus bijvoorbeeld:
<?php
session_start(); // start een nieuwe sessie, of zet een bestaande sessie voort
if (isset($_SESSION['Klantnummer'])) {
    // zet hier code neer voor wanneer de klant is ingelogd
    // ...
} else {
    // optioneel else statement voor als de klant niet ingelogd was met eventuele code
    // ...
}
?>
Thx het is gelukt!!

Reageren