login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Member, Admin AND Owner beveiliging.

Offline elecomte - 01/01/2007 17:11
Avatar van elecomteGrafische interesse Ik heb een membersysteem dat werkt met sessies.

1) Nu had ik graag een beveiliging uitgebouwt die checkt in een mysql tabel of je weldegelijk 1 (member, 2 (admin, 3 (owner) bent, en alleen als je dat bent kan je die pagina dus ook bekijken. Hoe zou ik dit het best aanpakken?

2) Een menu dat bij member, admin en owner verschillend is. Owner moet pagina's hebben die in het menu (het linkje) vvan een member niet te zien is.

Kan iemand wat helpen coden?:d

18 antwoorden

Gesponsorde links
Offline ikkedikke - 01/01/2007 17:54
Avatar van ikkedikke PHP expert if($_SESSION['level'] >1) //admin en owner
{
?>
menu
<?
}
?>
Offline Micron - 01/01/2007 17:59
Avatar van Micron HTML beginner Je zou een veld bij je leden tabel aan kunnen maken. Ik noem deze nou even 'level'. De standaardwaarde is gewoon leeg.

1 = lid
2 = admin
3 = owner

Als de gebruiker inlogd laat je gewoon kijken of de gebruiker die wilt inloggen een level heeft. Heeft de gebruiker een ander level dan maak je gewoon een nieuwe sessie aan genaamd 'toegang' bijvoorbeeld.

Als je dan een beveiligde pagina wilt laat je hem gewoon kijken of de gebruiker wel een goede sessie ervoor heeft. Dan zou je kunnen krijgen:

if( $_SESSION['toegang'] == 1 )
echo 'hoera toegang';
else
echo 'toegang geweigerd!';


Dit is wel de simpelste methode.
Offline elecomte - 01/01/2007 22:39 (laatste wijziging 01/01/2007 22:41)
Avatar van elecomte Grafische interesse if($_SESSION['level'] >1) //admin en owner


Hoe weet deze session dat hij dit moet halen uit een my sql database?
Dus, de tabel members heeft een rij level. En daaruit zou hij het moeten halen. Kan je nu al een iets specifiekere code geven? 


(ik weet niet al te goed hoe je die sessions moet maken)
Offline vinTage - 01/01/2007 22:49
Avatar van vinTage Nieuw lid
  1. <?
  2.  
  3. if(isset($_POST['inlogGezeik'])){
  4. //qry naar $_POST['gebruikersnaam'] en level van bijbehorende gebruikersnaam
  5. $_SESSION['level'] = $resultaat['level'];
  6. }
  7. else{
  8. //toon inlog form
  9. }
Offline elecomte - 01/01/2007 22:53 (laatste wijziging 01/01/2007 22:55)
Avatar van elecomte Grafische interesse een klein beetje meer uitleg is zeker niet mogelijk?
en uit die vorige code, kan ik niet echt goed afhelen dat hij de tabel van de gebruiker checkt om te kijken of hij wel rechten heeft.
Offline vinTage - 01/01/2007 22:56 (laatste wijziging 01/01/2007 22:58)
Avatar van vinTage Nieuw lid Nou, je hebt een inlog form met daarin 2 tekstvakken (gebruikersnaam & wachtwoord) en een button (genaamd inlogGezeik in mn vorige reply)

Zodra je op die knop klikt doe je een mysql query naar de geposte naam.
In de rij waar je naar zocht staat ook het level en dat level ken je weer toe aan de sessie van de persoon die probeert in te loggen.


edit, oh, ik begreep het verkeerd (wss nog wat alcohol van vanacht)
my bad.

De post van ikkedikke is toch gewoon wat je zoekt ?
Offline marten - 01/01/2007 23:00
Avatar van marten Beheerder Ik zelf gebruik het volgende systeem:

Action tabel
action_id INT(4)
action_naam varchar(50)

Gevuld met het volgende:
action id | Action naam
------------------------
1 | Nieuws
2 | Scripts
3 | Tutorials

Vervolgens heb ik een tabel leden_rechten

Rechten tabel
user_id INT(5)
action_id INT(4)
read INT(1)
write INT(1)
mod INT(1)
del INT(1)

Deze is gevuld met bv de volgende waardes (Lid met user_id 525)

user_id | action_id | read | write | mod | del |
--------------------------------------------
525 | 1 | 1 | 1 | 0 | 0 |

Deze mag alleen nieuws lezen en schrijven maar niet verwijderen of aanpassen.
Offline elecomte - 01/01/2007 23:00 (laatste wijziging 01/01/2007 23:25)
Avatar van elecomte Grafische interesse sessions begrijp ik zo goed niet..
Offline vinTage - 01/01/2007 23:02
Avatar van vinTage Nieuw lid http://www.site...4&id=4

Als je die gelezen hebt ben je al een stuk verder 
Offline elecomte - 01/01/2007 23:14
Avatar van elecomte Grafische interesse jah wel, maarten, dat wil ik ook alleen iets minder gecompliceerd. Maar hoe beveilig je dan nu een pagina?
kan je anders een pagina van jouw als voorbeeld geven dat ik de codes is grondig kan bekijken?
Offline Ultimatum - 01/01/2007 23:23
Avatar van Ultimatum PHP expert Huh? Waarom post je je reactie nou 2 keer?
Zodat Marten weet dat je het gepost hebt? Dat ziet hij anders ook wel..
Offline vinTage - 01/01/2007 23:24
Avatar van vinTage Nieuw lid Neen hij heeft zn bericht (wat net boven de mijne stond) geedit,,,daarin zei hij doodleuk dat hij niet zoveel van sessions snapte, vandaar dat ik em die link gaf.
Offline marten - 01/01/2007 23:32 (laatste wijziging 01/01/2007 23:55)
Avatar van marten Beheerder
Citaat:
kan je anders een pagina van jouw als voorbeeld geven dat ik de codes is grondig kan bekijken?


Dat zullen we maar niet doen 

bezig met klein kort voorbeeldje

niet lettend op enkele beveiliging ---> http://www.plaatscode.be/3657/
Offline Ultimatum - 02/01/2007 00:11
Avatar van Ultimatum PHP expert Maar marten, als je dus jou systeem gebruikt en je hebt bijvoorbeeld 5 beveiligde paginas en 20 members dan heb je gelijk alweer 100 records in je tabel staan. Als je ze dus 1 voor 1 moet doorlopen om te kijken of iemand wel toegang heeft. Word dat niet zwaar als je heel veel members krijgt?
Offline marten - 02/01/2007 00:22 (laatste wijziging 02/01/2007 00:24)
Avatar van marten Beheerder is misschien wel zo maar het zal minder zwaar zijn dan voor elk lid een string uitlezen met admin, owner ofzo. Met mijn systeem kan je veel meer statussen aanmaken. Voor bijvoorbeeld een stageloper ofzo. Ik maak gebruik van 1 en 0. Dit is veel minder vragend dan tekst. En er komt bij dat veel mensen databases onderschatten wat ze aankunnen. Een database draait zijn hand echt niet om voor 100.000 queries hoor. Als je je databasemodel maar goed in elkaar zet.

En er komt bij dat dit een erg simpel voorbeeld is Ik maak gebruik van 1 query waarin alles uitgelezen word.
Offline Ultimatum - 02/01/2007 00:28
Avatar van Ultimatum PHP expert Oke. Ik denk dat ik dan 1 van de mensen ben die een database onderschat.

Is er enige kans dat je die query post of anders even pmt , want ik ben wel beniewd en ik zocht een nieuw systeem omdat ik altijd gebruik maakte van tekst zoals je zei (admin/mod) etc.. maar dat gaat niet meer op met dit project 
Offline marten - 02/01/2007 00:34 (laatste wijziging 02/01/2007 00:54)
Avatar van marten Beheerder zelf een beetje logisch nadenken dan kom je er wel uit Er zijn genoeg loop constructies in php die je kan gebruiken hiervoor.

Als ik ff tijd hebt probeer ik er een script van te maken hier in de library

Citaat:
Maar marten, als je dus jou systeem gebruikt en je hebt bijvoorbeeld 5 beveiligde paginas en 20 members dan heb je gelijk alweer 100 records in je tabel staan


Is ook niet waar 
20 rijen in de leden_rechten tabel
5 rijen in de actions tabel

25 rijen heb je dus 
Offline elecomte - 02/01/2007 10:29 (laatste wijziging 02/01/2007 13:27)
Avatar van elecomte Grafische interesse
  1. <?
  2.  
  3. if(!$login){
  4. ?>
  5.  
  6. <i>Welcome</i> guest<br>
  7. <ul>
  8. <li><a href="index.php?m=login">Log in</a></li>
  9. <li><a href="index.php?m=aanmelden">Register</a></li>
  10. </ul>
  11. <?
  12. }
  13. if($login AND session_is_registered('memberid')){
  14. $query = mysql_query("SELECT * FROM tco_members WHERE memberid = '$memberid'");
  15.  
  16. while($object = mysql_fetch_object($query)){
  17. $gebruikersnaam = $object->gebruikersnaam;
  18. $priveberichten = $object->pm;
  19. }
  20.  
  21. $query = mysql_query("SELECT * FROM tco_priveberichten WHERE naar = '$memberid'");
  22. $result = mysql_num_rows($query);
  23. ?>
  24.  
  25. <i>Welcome</i> <? echo $gebruikersnaam ?><br>
  26. <ul>
  27. <?
  28. if($priveberichten){
  29. ?>
  30. <li><a href="index.php?m=priveberichten">Messages</a> ( <? echo $result ?> )</li>
  31. <li><a href="index.php?m=profiel&mid=<? echo $memberid ?>">My profile</a></li>
  32. <li><a href="index.php?m=wijzig">Preferences</a></li>
  33. <li><a href="index.php?m=profiel">Member list</a></li>
  34. <li><a href="logout.php">Log out</a></li>
  35. </ul>
  36.  
  37. <?
  38. }
  39. }
  40. ?>



Deze code gebruik ik momenteel. Wanneer je ingelogt bent, krijg je een menutje, en indien niet (!) krijg je een menu waar je je kan inloggen of registreren.
Het zou dus hetzelfde moeten zijn, alleen moet hij bij de ingelogde uit een tabel levels 1, 2 of 3 halen. En dan moet ik ook een manier hebben om dat menu samen te stellen naargelang de levels.
Mss kan je hieruit specifiekere code voor me ontwikkelen 

Alvast heel erg bedankt voor alle bijdragen!


Iemand?


Het word gebruikt op deze site:
http://disclaim...p;lang=eng
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.209s