login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Eerst inloggen, dan bekijken.

Offline Gamezhoek - 16/03/2006 17:34
Avatar van GamezhoekHTML interesse 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?

19 antwoorden

Gesponsorde links
Offline riekele - 16/03/2006 17:36 (laatste wijziging 16/03/2006 17:36)
Avatar van riekele PHP beginner ja, met cookies of met sessions
Offline Gamezhoek - 16/03/2006 17:39 (laatste wijziging 16/03/2006 17:41)
Avatar van Gamezhoek HTML interesse 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?
Offline Ultimatum - 16/03/2006 17:43
Avatar van Ultimatum PHP expert
  1. <?php
  2. if(isset($_COOKIE[cookienaam])) {
  3. //toegang
  4. }else{
  5. //geen toegang
  6. }
  7. ?>
Offline Simon - 16/03/2006 17:44
Avatar van Simon PHP expert in die //toegang moet je natuurlijk checken of de gegevens in het cookie kloppen, anders kun je gewoon zelf een cookie maken en zo binnengeraken
Offline Gamezhoek - 16/03/2006 17:50 (laatste wijziging 16/03/2006 18:01)
Avatar van Gamezhoek HTML interesse Kunnen mensen erachter komen hoe die cookie heet?
Want, als ik die cookie bijv. JKfeafJIJELjfkhfieaKLJX noem, zal denk ik niemand het raden.

EDIT: Ik heb nu dit, om ervoor te zorgen dat je alleen met die cookie de pagina kan bekijken:
  1. <?php
  2. if(isset($_COOKIE["cookienaam"])) {
  3. ?>
  4. <form method="post" action="top5add2.php">
  5. <input type="text" name="addsite">
  6. <input type="submit" value="Plaats website" />
  7. </form>
  8. <?php
  9. }else{
  10. echo 'U moet ingelogd zijn om deze pagina te kunnen bekijken.';
  11. }
  12. ?>

Maar, ook al heb ik die cookie, dan nog krijg ik die tekst te zien, in elk geval. Ik dénk dat ik die cookie heb, want als ik die cookie wil aanmaken, krijg ik deze tekst te zien:
Warning: Cannot modify header information - headers already sent by (output started at locatie/blabla/inloggen.php:14) in locatie/blabla/inloggen.php on line 15
Je krijgt die cookie na het inloggen, en na het inloggen word je dus verwezen naar inloggen.php, waar je ook die cookie krijgt.
In inloggen.php staat: (verkort)
  1. <?php
  2. if(($_POST['username']==$tabel['name']) AND ($_POST['password']==$tabel['password'])){
  3. echo "U bent succesvol ingelogd!";
  4. setcookie("JkZlfeJKFEIlzfjoeOlzkfOkjfezvnewR");
  5. }
  6. else{
  7. echo "Uw gegevens kloppen niet.";
  8. }
  9. ?>

Waarvan:
setcookie("JkZlfeJKFEIlzfjoeOlzkfOkjfezvnewR");
lijn 15 is.
Offline Rens - 16/03/2006 18:03 (laatste wijziging 16/03/2006 18:03)
Avatar van Rens Gouden medaille

Crew algemeen
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
Offline timo - 16/03/2006 18:03
Avatar van timo PHP ver gevorderde met firefox kan je de inhoud van een cookie lezen... dus je moet eigenlijk met sessions werken die een unieke waarde krijgen...
Offline Gamezhoek - 16/03/2006 18:10
Avatar van Gamezhoek HTML interesse Rensjuh, die ob_start snap ik eigenlijk niet, en, hoe werken sessions dan?
Net als cookies ofzo?
Offline Rens - 16/03/2006 18:13
Avatar van Rens Gouden medaille

Crew algemeen
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:
  1. <?PHP
  2. // moet altijd bovenaan
  3. // het starten van de sessie
  4.  
  5. // waarde toekennen aan een sessie
  6. $_SESSION['blaat'] = "iets";
  7.  
  8. // waarde op het scherm zetten
  9. echo $_SESSION['blaat'];
  10. // zal "iets" op het scherm zetten
  11. ?>

Je moet wel session_start(); op elke pagina zetten, anders word de sessie meteen gestopt en is hij niet meer beschikbaar.
Offline Gamezhoek - 16/03/2006 18:23 (laatste wijziging 16/03/2006 18:23)
Avatar van Gamezhoek HTML interesse Ik heb session_start(); boven elke pagina gezet,
en na het inloggen gedaan:
  1. <?php
  2. $_SESSION['login'] = "true" //dat je dus ingelogd bent
  3. ?>

en dan boven een pagina gezet, die je alleen mag bekijken na het inloggen:
  1. <?php
  2. if $_SESSION['login'] = "true" {
  3. echo 'Oke, deze pagina mag je bekijken';
  4. } else {
  5. echo 'Geen toegang voor jou!';
  6. } ?>

Maar ik krijg alleen maar errors
Offline Rens - 16/03/2006 18:26
Avatar van Rens Gouden medaille

Crew algemeen
Welke errors?
Zonder errors valt er weinig te debuggen he...
Offline Gamezhoek - 16/03/2006 18:29
Avatar van Gamezhoek HTML interesse 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();
Offline Rens - 16/03/2006 18:33
Avatar van Rens Gouden medaille

Crew algemeen
PHP.net: ob_start
voor alle output zetten.
Dus:
  1. <?PHP
  2. // rest van de code
  3. ?>
Offline Gamezhoek - 16/03/2006 18:36
Avatar van Gamezhoek HTML interesse Ik krijg nu nog steeds dezelfde error, en de lijn wijst nog steeds naar: session_start();
Offline Rens - 16/03/2006 18:37
Avatar van Rens Gouden medaille

Crew algemeen
Laat eens wat code zien.
Als het veel is, even op http://www.pastebin.be zetten.
Offline Gamezhoek - 16/03/2006 18:42
Avatar van Gamezhoek HTML interesse 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.
Offline vinTage - 16/03/2006 18:44
Avatar van vinTage Nieuw lid FOUT
  1. <HEAD>
  2. <TITLE>Title</TITLE>
  3. </HEAD>
  4. <BODY>
  5. <font size=3" face="arial"><b>Aanmelden</b></font><br>
  6. <?php
  7.  


goed

  1. <?php ob_start(); ?>
  2. <HEAD>
  3. <TITLE>Title</TITLE>
  4. </HEAD>
  5. <BODY>
  6. <font size=3" face="arial"><b>Aanmelden</b></font><br>
  7. <?php //de rest

Offline Rens - 16/03/2006 18:44
Avatar van Rens Gouden medaille

Crew algemeen
Ik zei al:
session_start voor alle output zetten.
Jij hebt je session_start niet voor alle output staan.
  1. <HEAD>
  2. <TITLE>Title</TITLE>
  3. </HEAD>
  4. <BODY>
  5. <font size=3" face="arial"><b>Aanmelden</b></font><br>
  6. <?php
  7.  

Is wat jij hebt.
Zo moet het:
  1. <?PHP
  2. ?>
  3. <HEAD>
  4. <TITLE>Title</TITLE>
  5. </HEAD>
  6. <BODY>
  7. <font size=3" face="arial"><b>Aanmelden</b></font><br>
  8. <?php
Offline Gamezhoek - 16/03/2006 18:50
Avatar van Gamezhoek HTML interesse 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:
  1. <?PHP
  2.  
  3. if($_SESSION['login'] = "True") {
  4. ?>
  5. <form method="post" action="top5add2.php">
  6. <input type="text" name="addsite">
  7. <input type="submit" value="Plaats website" />
  8. </form>
  9. <?php
  10. }
  11. else
  12. {
  13. echo 'Helaas, u moet ingelogd zijn om deze pagina te kunnen bekijken.';
  14. }
  15. ?>

Maar, ik merk niks van die sessies, ik kan er gewoon heen gaan wanneer ik wil, ook al ga ik eerst nog naar uitloggen.php.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2025 Sitemasters.be - Regels - Laadtijd: 0.331s