Is dit goed werken?
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
session_name('ses_naam');
session_start();
if(!isset($_SESSION['naam']) || $_SESSION['naam']==''){
header("HTTP/1.0 404 Not Found");
exit;
}
?>
session_name('ses_naam');
session_start();
if(!isset($_SESSION['naam']) || $_SESSION['naam']==''){
header("HTTP/1.0 404 Not Found");
exit;
}
?>
Jan
Het is m.i. logischer om niet-ingelogde gebruikers door te sturen naar de inlog pagina, zodat ze zich, als ze dat willen, kunnen authenticeren. Mocht je om een of andere reden toch een foutmelding willen laten zien, dan zou ik http error 403 (Forbidden) gebruiken, dat betekent letterlijk: de client heeft niet genoeg rechten om deze pagina te kunnen zien. Maar mijn voorkeur gaat nog steeds uit naar de eerste oplossing.
!isset(x) || x == '' kun je trouwens verkorten tot empty(x).
En tot slot: het zou logischer zijn als op grond van de content zelf wordt bepaald of iemand toegang heeft tot dat onderdeel. En als dat niet het geval is dat je een 404 / 403 pagina serveert, of dat je iemand doorstuurt naar een login (maar daarmee geef je dus indirect weg dat dit een beveiligde pagina betreft).
Het "bepalen of iemand toegang heeft" doe je meestal op grond van privileges, en niet zozeer op het ingesteld staan van een gebruikersnaam. Maar het kan zijn dat dit systeem nog in de kinderschoenen staat en iedereen die een login heeft tevens een superadmin is. Desalniettemin is het zinnig(er) om hier (privileges) zo snel mogelijk mee te beginnnen om er voor te zorgen dat je straks niet allerlei code om hoeft te schrijven.
En dan zit op een gegeven moment waarschijnlijk enkel (qua user-administratie) het user id in je sessie, en wordt er elke page-access een user object opgebouwd met data uit de database, waarbij tevens privileges worden toegekend aan dit vluchtige gebruiker-object (die maar 1 page-access geldig is). Dit voorkomt o.a. dat er verouderde gegevens in je sessie blijven hangen etc. Op grond van deze privileges bepaal je dan wat er uiteindelijk moet gebeuren.
Wat Thomas zegt:
Ga uit van drie (of meer) verschillende gebruikers:
a) gebruikers die niet ingelogd zijn en dus volledig anoniem zijn
b) gebruikers die ingelogd zijn als NORMAL USER (minder rechten)
c) gebruikers die ingelogd zijn als ADMINISTRATOR (meer rechten)
Stel dat de beveiligde pagina alleen voor administrators is dan kunnen er dus twee andere 'type' gebruikers die mogelijk die pagina willen openen maar de inhoud niet mogen zien. Deze type gebruikers zijn dan de niet ingelogde gebruiker of de gebruiker met te weinig rechten.
Indien het een niet ingelogde gebruiker is dan lijkt het mij logisch om deze naar het inlogformulier door te sturen. (onthoud de pagina waar hij naar toe wilde in de SESSION en stuur hem weer naar die pagina nadat hij ingelogd is). Als de gebruiker wel ingelogd is maar te weinig rechten heeft dan zou ik gewoon een keiharde ACCESS DENIED tonen of als alternatief een NOT FOUND inderdaad.
Toevoeging op 26/12/2017 08:48:53:
Het voordeel van een ACCESS DENIED kan zijn dat een gebruiker kan komen klagen bij de administrator dat hij een pagina niet kan opvragen waarna beslist kan worden of deze gebruiker misschien meer rechten moet krijgen of de pagina misschien wel van een ander slotje voorzien moet worden. Het hangt misschien een beetje af van de aard van de website.
Jan