Hoe zorg ik ervoor dat je eerst moet inloggen, en dat je dan pas een bepaalde pagina kan bekijken?
Moet dat met cookies ofzo?
Alle users staan in de tabel: 'users' opgeslagen.
Moet ik na het inloggen een cookie maken, en dan op elke pagina controleren of die cookie aanwezig is ofzo?
Sessions? Hoe gaat dat precies in zijn werk?
En hoe moet het eigenlijk dan met cookies?
Op php.net begrijp ik er niet veel van, ik weet wel hoe ik een cookie kan maken, maar hoe controlleer ik later weer of die cookie aanwezig is?
<?php
if(isset($_COOKIE["cookienaam"])) {
?>
<form method="post" action="top5add2.php">
<input type="text" name="addsite">
<input type="submit" value="Plaats website" />
</form>
<?php
}else{
echo 'U moet ingelogd zijn om deze pagina te kunnen bekijken.';
}
?>
Dat komt omdat er al output verzonden is.
Dit is op te lossen door ob_start bovenaan je pagina te zetten.
Ook moet je wel wat meer meegeven met setcookie dan alleen de cookienaam. PHP.net: setcookie
Ikzelf vind sessies wat fijner.
Je slaat geen bestandjes op, op de harde schijf van de bezoeker.
Sessies worden op de server bijgehouden door een cookie, hierin staat het sessieID van een bepaalde bezoeker.
Sessies kun je zo gebruiken:
<?PHP
// moet altijd bovenaan
// het starten van de sessie
session_start();
// waarde toekennen aan een sessie
$_SESSION['blaat'] = "iets";
// waarde op het scherm zetten
echo $_SESSION['blaat'];
// zal "iets" op het scherm zetten
?>
Als ik alleen nog maar session_start(); op de homepage zet, krijg ik dit:
Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at locatie/index.php:6) in locatiet/index.php on line 7
Lijn 7 is dus: session_start();
Ik heb het er neergezet, 't staat op: http://www.pastebin.be/586/
Maar, is dit eigenlijk niet gewoon mogelijk met Cookies? Daar snap ik een stuk meer van.
Oke, dat heb ik nu gedaan, en ik krijg geen errors meer.
Bij uitloggen.php heb ik gedaan:
$_SESSION['login'] = "False"; zodat je kunt uitloggen.
Bij top5add.php heb ik gedaan:
<?PHP
ob_start();
session_start();
if($_SESSION['login'] = "True") {
?>
<form method="post" action="top5add2.php">
<input type="text" name="addsite">
<input type="submit" value="Plaats website" />
</form>
<?php
}
else
{
echo 'Helaas, u moet ingelogd zijn om deze pagina te kunnen bekijken.';
}
?>