Goeie dag ik heb het onderstaand inlog script geschreven (met wat hulp)
maar loop nog op 1 klein ding vast.
Na het controleren van alle punten (en ze zijn correct ingevuld)
zou het script je door moeten sturen.
Dit doet hij alleen niet. Ik krijg ook geen foutmelding(en) te zien.
Misschien dat iemand ziet wat er mis is?

<?php
ini_set('display_errors', 'On');
error_reporting(E_ALL);

// Als de site online gaat, verander je true in false
// Het makkelijkst is om deze constante op één plaats in te stellen en niet in elk bestand opnieuw.
define('ENABLE_DEBUG', true); // zet op false wanneer online

session_start();
include 'includes/connection.php';

if ('POST' == $_SERVER['REQUEST_METHOD'] and 'login' == $_GET['cmd']) {
// Gebruikersnaam en wachtwoord vergelijken met gegevens in de database
$sSQL = "SELECT
login,
actief,
wachtwoord
FROM
members
WHERE
login = '" . mysql_real_escape_string($_POST['login']) . "'";
$rResult = mysql_query($sSQL, $connection);
// Controleren of de query is gelukt
if (false === $rResult) {
if (defined('ENABLE_DEBUG') and ENABLE_DEBUG) {
echo 'Er ging iets fout met de query (1) op de pagina inloggen.php:' . mysql_error($connection) . '(' . $sSQL . ')';
} else {
echo 'Er is een fout opgetreden probeer het later opnieuw';
}
} else {
// Controleren hoeveel resultaten er zijn
if (1 == mysql_num_rows($rResult)) {
// Er is één resultaat gevonden, dus gegevens fetchen
$row = mysql_fetch_array($rResult);
// Controleren of het account geactiveerd is
if (0 == $row['actief']) {
echo 'Het account is nog niet geactiveerd. Activeer deze eerst.';
}

// controleren of wachtwoord klopt
elseif (md5($_POST['pass']) != $row['wachtwoord']) {
echo 'wachtwoord/gebruikersnaam combinatie klopt niet.';
}

} else {
// Alle gegevens kloppen, dus sessie vullen
$_SESSION['inlogdata']['ingelogd'] = true;
$_SESSION['inlogdata']['remote_addr'] = $_SERVER['REMOTE_ADDR'];
$_SESSION['inlogdata']['username'] = $row['login'];
}
}
}
// Hier gaan we DE persoon uitloggen
if (isset($_GET['cmd']) and 'logout' == $_GET['cmd']) {
$_SESSION['inlogdata']['ingelogd'] = false;
$_SESSION['inlogdata']['remote_addr'] = null;
$_SESSION['inlogdata']['username'] = null;

//echo "Je bent uitgelogd en wordt doorgestuurd"; // Een echo kan niet vóór header()!
header('Location: index.php');
exit; // Script stoppen
}

// Is DE persoon ingelogd en bestaan alle sessies? Dan wordt DE persoon doorgestuurd
if (isset($_SESSION['inlogdata']['ingelogd'], $_SESSION['inlogdata']['remote_addr']) and $_SESSION['inlogdata']['username']) {
// Gebruiker is ingelogd
//echo "Je bent ingelogd, je wordt door gestuurt"; // Een echo kan niet vóór header()!
header('Location: userdashboard.php');
exit; // Script stoppen
} else {

// Controleren of het IP-adres klopt
if ($_SESSION['inlogdata']['remote_addr'] != $_SERVER['REMOTE_ADDR']) {
echo 'Mogelijke hijack!';
}
}
mysql_close($connection);
?>
Je constructie is niet correct:
<?php
if (1 == mysql_num_rows($rResult)) {
// tussenliggende regels verwijderd
} else {
// dit hoort niet in de else

// Alle gegevens kloppen, dus sessie vullen
$_SESSION['inlogdata']['ingelogd'] = true;
$_SESSION['inlogdata']['username'] = $row['login'];
}
?>
Yessssss bedankt nu doet ie het.
Ook knudde een klein statementje die het hele script omzeep helpt.
Als een leek zag ik het niet.
Voortaan correcter inspringen (en TAB terug bij het afsluiten) dan zie je dit direct.

Deze regels moeten dus een TAB terug:
<?php
} else {
// Alle gegevens kloppen, dus sessie vullen
$_SESSION['inlogdata']['ingelogd'] = true;
$_SESSION['inlogdata']['username'] = $row['login'];
}
}
}
?>

Reageren