Hoi mensen, Milo van dit forum heeft me al enorm geholpen, maar ik vrees dat ik er niet uitkom. Mijn site blijft me continue redirecten naar logout.php waar alle sessions gedelete worden. Dit terwijl alles het vanmorgen nog deed.. dus het komt door iets wat ik heb gedaan=P

Hieronder de code van de verschillende paginas.

login.php
<?php
// De Sessies starten
session_start();

// Database connectie maken
include('config.php');

// Als er op submit is gedrukt
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
// Als er een gebruikersnaam is ingevult
if(isset($_POST['gebruikersnaam']))
{
// Als er een wachtwoord is ingevult
if(isset($_POST['wachtwoord']))
{
// De gebruikersnaam / wachtwoord combinatie uit de database halen
$sql = mysql_query("SELECT
id,
gebruikersnaam,
wachtwoord
FROM
members
WHERE
gebruikersnaam = '".mysql_real_escape_string($_POST['gebruikersnaam'])."'
AND
wachtwoord = '".mysql_real_escape_string(md5($_POST['wachtwoord']))."'
");

// Als de query succesvol uitgevoerd is
if($sql)
{
// Als er gebruikers zijn met deze combi
if(mysql_num_rows($sql) > 0)
{
// $rec aanmaken
$rec = mysql_fetch_assoc($sql);

// De sessie zetten
$_SESSION['login'] = $rec['status'];
header('Location: vervolg.php');

}
// Anders
else
{
// De gebruikersnaam wachtwoord combi bestaad niet
echo 'De ingevoerde gebruikersnaam en wachtwoord combinatie is bij ons niet bekend.';
}
}
// Anders
else
{
// De fout van de query opvangen
echo 'Er is een fout opgetreden in de query: <br />';
echo mysql_error();
}
}
// Anders
else
{
// Er is geen wachtwoord ingevult
echo 'U bent vergeten uw wachtwoord in te vullen';
}
}
// Anders
else
{
// Er is geen gebruikersnaam ingevult
echo 'U bent vergeten uw gebruikersnaam in te vullen';
}
}
// Anders
else
{?> *HTML pagina hier*
<?php }?>

vervolg.php:

<?php
session_start();
include('config.php');

// Als je ingelogt bent.
if(isset($_SESSION['login']))
{
// Je gegevens uit db halen
$sql = mysql_query("SELECT * FROM members WHERE status = '".intval($_SESSION['login'])."'");

// Als query gelukt is
if($sql)
{
// Als er items zijn
if(mysql_num_rows($sql) > 0)
{
// $rec aanmaken
$rec = mysql_fetch_assoc($sql);

// Als status 3 is
if($rec['login'] == 3)
{
echo '3. Dit word je admin pannel dinges...';
include('Register.php');
}
// Als status 2 is
elseif($rec['login'] == 2)
{
echo '2. Dit word de persoonlijke pagina';
include('locked_2.php');
}
// Anders
else
{
echo '1. Dit word de persoonlijke pagina';
include('logout.php');
}
}
// Anders
else
{
// Je moet inloggen
echo 'U moet ingelogt zijn om deze pagina te bekijken.';
include('logout.php');
}
}
// Anders
else
{
// Error opvangen
echo 'Er is een fout opgetreden met de query: <br />';
echo mysql_error();
include('logout.php');
}
}
// Anders
else
{
echo 'U moet ingelogt zijn om deze pagina te bekijken.';
include('logout.php');
}
?>

locked_2.php:
<?php
if(!isset($_SESSION['login']))
{
echo 'U moet ingelogt zijn om deze pagina te bekijken';
}
elseif(($_SESSION['login']) != 2){
print_r($_SESSION);
}
else{
?>*html pagina*
<?php
}
?>

logout.php
<?php
session_unset(); // alle variabelen vrijgeven
session_destroy(); // sessie afsluiten
?>

Database opbouw:
databasenaam: server
1 tabel: members
in die tabel staan 6 kolommen:
- id
- gebruikersnaam
-wachtwoord
- email
-naam
-status


Heeft iemand een idee? :)

Bedankt voor ieder antwoord!

Groetjes

Simolokid
Dit is op zich erg knap gedaan.
$_SESSION['login'] = $rec['status'];
Je vult de session met iets dat je NIET hebt opgehaald met de query.

Edit: Zet dit bovenin je script.
<?php
error_reporting(E_ALL);
ini_set("display_errors", 1);

// rest
?>
Ik heb inmiddels de query aangepast, dat ook status wordt opgehaald. Toch blijf ik met het probleem dat ik geredirect wordt.

Nu even boven elke pagina die error reporting code zetten en kijken wat het effect is; - had weinig effect. Ik had alle errors al zichtbaar blijkbaar.

Misschien toch is een overzichtje maken met hoe elke pagina in elkaar zit.. scheelt wat werk met debuggen =P.

Login etc. doet het weer, ik moest simpelweg de query aanpassen.

In iedergeval bedankt, ik ga even kijken of ik het nu verder kan beveiligen tegen navigatie-aanvallen =P (zelf naar 'beveiligde-paginanaam'.php gaan zegmaar ).

Groetjes!

Als je inlogt stop jij de status in de session.
Ik neem aan dat er meerdere users dezelfde status zullen hebben.
Dan gaat men naar vervolg.php.
Daar kijk je of de status in de database staat.
Dat kan dus een heel andere user zijn.
Allemaal niet erg logisch en betrouwbaar.
Technisch gezien, als ik zorg dat het bestandje niet zichtbaar te lezen is (mod_rewrite schijnt dat te zijn ) kan ik het allemaal namen geven als'n3j2k' voor bv. vervolg.php, kan de persoon er zoiezo nooit opkomen dat de pagina zo heet =P.

Heb net even de rest van mijn website in orde gebracht, login-schermpje ook nu bovenin op elke pagina, alleen nu werkt mijn 'hoofd' -account niet meer.. >.> 't is ook altijd wat =P

We gaan vrolijk verder, er zullen vast nog veel meer problemen komen. In iedergeval bedankt voor het antwoord, zal ik zeker wat mee doen, idd niet erg veilig namelijk.
Hey, je hebt iets veranderd waar ik niet zo blij mee ben :P:P je zet nu in login een status terwijl daar de gebruikers id in hoort :P:P
Hey, je hebt iets veranderd waar ik niet zo blij mee ben :P:P je zet nu in login een status terwijl daar de gebruikers id in hoort :P:P

Reageren