Beste cp,
Ik heb op mijn site een login script, deze deed het gewoon de heletijd. Maar nu sinds vandaag, als ik inlog word ik ook gelijk weer uitgelogged automatisch.
Ik log dus in, de menu's komen te voorschijn en dan als ik ergens op klik komt er te staan dat ik niet ingelogged ben. Hij logt mij dus vanzelf uit.
Dit is mijn login script:
PHP
<?php
include("includes/include.php");
include("includes/connect.php");
include("includes/functies.php");
?>
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST') {
// Dit is niet mijn gewoonte om queries op deze manier in te springen, maar om de layout
// van Sitemasters niet naar de knoppen te helpen doe ik dit even gek :)
$qLogin = mysql_query("SELECT id FROM gebruikers WHERE
gebruikersnaam = '".mysql_real_escape_string($_POST['gebruikersnaam'])."' AND
wachtwoord = '".sha1($_POST['wachtwoord'])."'");
// Met deze query selecteren we het gebruikers-id van de gebruikersnaam en controleren we of
// de account geactiveerd is in 1 keer. Als je deze niet snapt, lees hem dan 20 keer :)
// Je kan natuurlijk ook een tutorial over dit soort queries lezen, alhoewel
// ze poepsimpel zijn IMO.
// Deze query mag overigens geen resultaten opleveren om te mogen inloggen. Als deze
// wél een resultaat oplevert is de account nog niet geactiveerd (en bestaat de
// activatiedata dus nog).
$qActivatie = mysql_query("SELECT COUNT(id) FROM gebruikers, gebruikers_activaties WHERE
gebruikers.gebruikersnaam = '".mysql_real_escape_string($_POST['gebruikersnaam'])."' AND
gebruikers.id = gebruikers_activaties.gebruikers_id");
if(mysql_result($qActivatie,0) != 0) {
echo 'De account is nog niet geactiveerd.';
} elseif(mysql_num_rows($qLogin) == 0) {
echo 'De gebruikersnaam/wachtwoord combinatie is niet correct.<br><br>';
} else {
// Alles ok, inloggen dus.
// Nu is 1 ding belangerijk:
// ZORG DAT ER EEN session_start() GEPLAATST IS, HETZIJ IN JE INDEX.PHP WAAR
// DEZE PAGINA IN GEPLAATS WORDT, HETZIJ BOVENAAN DEZE PAGINA (ALS ER GEEN
// INCLUDESYSTEEM IS)!!!
$_SESSION['gebruiker'] = mysql_result($qLogin, 0);
$_SESSION['gebruikersnaam'] = $_POST['gebruikersnaam'];
// Mocht je nog andere data willen in je sessie,
// zoals een level, dien je dit hier te plaatsen.
?>
Je bent succesvol ingelogged. Klik <a href="producten.php">hier</a> om onze producten te kunnen zien.<br><br>
<?php
}
}
?>
<form action="<?=htmlentities($_SERVER['REQUEST_URI'])?>" method="post">
<? if(isset($_SESSION['gebruiker'])) {
} else { ?>
Gebruikersnaam: <input type="text" name="gebruikersnaam" /><br>
Wachtwoord: <input type="password" name="wachtwoord" /><br>
<center> <a href="passlost">Wachtwoord vergeten?</a></center><br>
<input name="sub" type="submit" value="Log nu in!"><br><br>
<i>Heb je een probleem bij het inloggen? Let erop dat het inloggen hoofdlettergevoelig is.</i>
<?
}
?>
Toon Meer
functies.php
en voor als het nodig is, mijn logout.php:
PHP
<?php
include("includes/include.php");
include("includes/connect.php");
include("includes/functies.php");
?>
<?php
// Zorg dat session_start() hierboven ergens voorkomt,
// hetzij in je globale index.php,
// hetzij gewoon bovenaan dit bestand.
if(isset($_SESSION['gebruiker'])) {
session_destroy();
echo'Je bent uitgelogd';
} else {
echo'Je kan niet uitloggen want je bent nog nooit ingelogged!';
}
?>
Toon Meer
Ik snap het echt niet, ik heb er niks aan veranderd maar ik word gewoon gelijk weer uit gelogt.