Ik heb een inlog systeem gemaakt voor 1 persoon, alleen zit ergens een fout die ik niet kan oplossen.

De eerste keer dat ik op het inlog scherm kom en geef de verkeerde of geen gegevens in gaat het goed. De foutmelding klopt. Klik ik daarna op de link "terug" en dan weer op inloggen (Met de verkeerde gegevens) geeft de pagina toch weer dat ik goed ingelogd ben. Terwijl ik dus eigenlijk weer de foutmelding moet zien.

Script:

Login.php

<?
session_start();
ob_start();
include "config.php";
if(!empty($_POST)) {
$_SESSION["username"]=$_POST["username"];
$_SESSION["password"]=$_POST["password"];

if ($_SESSION["username"]!=$username || $_SESSION["password"]!=$password) {

die("Je hebt een verkeerde gebruikersnaam of wachtwoord ingevoerd!<br> <a href=\"Adminlogin.php\">Terug</a>");

session_destroy();
}else{
header("Location: Toevoegen.php");
}
}else{
?>
<html>
<body>
<form method=post action="<? echo($_SERVER["PHP_SELF"]);?>">
Gebruikersnaam: <input name=username><br>
Wachtwoord: <input name=password type=password><br>
<input type=submit value="Inloggen!">
</form>
</body>
</html>
<?
}
?>

Config.php

<?php
ob_start();
$db_host = "localhost"; // vul hier het adres van de server in
$db_login = ""; // je loginnaam
$db_pass = ""; // Je password
$db_database = "testdb"; // naam van de database
mysql_connect("$db_host", "$db_login", "$db_pass") or die("MySQL connectie mislukt.");
mysql_select_db("$db_database")or die("Selecteren van database mislukt.");


$username="Test"; // jouw gebruikersnaam
$password="Testen"; // jouw wachtwoord
?>

en de pagina die dus niet bereikbaar zou moeten zijn zonder in te loggen:

<?
session_start();
if(!isset($_SESSION["username"]) || !isset($_SESSION["password"]))

die("<h2>Je hebt niet correct ingelogd!</h2><br><a href='Adminlogin.php'>Klik hier om in te loggen</a>");


else{
?>
<html>
<head>
<title>Beveiligde pagina</title>
</head>
<body>
<h2>Welkom <? echo($_SESSION["username"]); ?>, je hebt correct ingelogd!</h2>
</body>
</html>

Ik weet zeker dat ik iets over het hoofd zie. Maar wat??
Lijkt mij dat de gegevens die ingevoerd worden in sessions worden gezet, en daarom kan je inloggen als je een tweede keer op inloggen drukt.

kan zijn dat ik er naast zit, maar moet je niet eerst de sessie variabelen vrijgeven d.m.v.:
<?php session_unset(); ?>
en eerst de sessie starten natuurlijk met session_start(), zoals je ook hebt gedaan.

Dan krijg je dus :

die("Je hebt een verkeerde gebruikersnaam of wachtwoord ingevoerd!<br> <a href=\"Adminlogin.php\">Terug</a>");

session_unset();
session_destroy();
}

//edit:
staan die variabelen $username en $password eigenlijk in je database? Als dat zo is moet je kijken of de ingevoerde username en password overeenkomen met een waarde uit de database. Dat doe je niet volgens mij.
<?
if ($_SESSION["username"]!=$username || $_SESSION["password"]!=$password)
?>

3x raden wat er gebeurt als globals niet uit staan.. (register global ..?) Hij checked dan of $_SESSION['username'] overeen komt met de sessie $username. Ik zou $username een andere naam geven. Ook zou ik eerst de variabelen zetten, en daarna pas die if statement uitvoeren.
Register global uit en klaar. Nu werkt het wel.

Bedankt voor de hulp!

Reageren