Is dit goed werken?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jan R

Jan R

25/12/2017 11:54:41
Quote Anchor link
Als er niet ingelogd is stur ik een 404 fout.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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;
}

?>


Jan
 
PHP hulp

PHP hulp

26/11/2024 17:37:45
 
Bo Ter Ham

Bo Ter Ham

25/12/2017 12:29:59
Quote Anchor link
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.
 
Thomas van den Heuvel

Thomas van den Heuvel

25/12/2017 22:36:22
Quote Anchor link
Hm, je zou net zo goed kunnen doen alsof de pagina niet bestaat. Dan geef je namelijk ook niet weg dat dit een beveiligde pagina is. Als men niet weet dat er een deur zit gaan ze ook niet aan het slot morrelen :).

!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.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

26/12/2017 08:41:35
Quote Anchor link
Ik ben geen voorstander van empty() daar deze op een integer 0, een float 0.0 en een string '0' doodleuk beweert dat die leeg is. Dat gezegd zijn er genoeg situaties waarin je empty() kunt gebruiken maar je moet dat dan wel goed in je achterhoofd houden.

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 R

Jan R

26/12/2017 08:49:10
Quote Anchor link
OK allen bedankt. Het was maar een wild idee. Dan doe ik gewoon net als vroeger. foutmelding van rechten en exit script.

Jan
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.