login  Naam:   Wachtwoord: 
Registreer je!
 Forum

[PHP] Aanpassen van ledenscript (Opgelost)

Offline raintjah - 01/09/2007 16:26 (laatste wijziging 01/09/2007 16:26)
Avatar van raintjahNieuw lid Hallo,

zoals in mijn vorige posts, gaat het weer om dit script:
http://www.site...&id=85

Ik zou het graag een beetje versimpelen, ik heb namelijk helemaal geen verschillende rechten nodig!

Het gaat dus om de volgende code:

  1. <?php
  2. // include/require hier evt nog andere zaken
  3. require ("connect.php");
  4. // we willen op deze pagina gebruik maken van beveiliging mbv sessies,
  5. // dus includen (requiren) we session.php
  6. require("session.php");
  7. ?>
  8. <html>
  9. <head>
  10. <title>sessies · voorbeeld</title>
  11. </head>
  12.  
  13. <body>
  14. <?php
  15. /*
  16. we gaan hier kijken of de gebruiker is ingelogd, en welk
  17. user level de gebruiker heeft. Op grond daarvan laten we
  18. bepaalde delen al dan niet zien.
  19. Een gebruikerslevel is een getal wat aangeeft hoeveel
  20. "macht" je hebt. Vaak is het zo: hoe hoger het getal, hoe
  21. meer je mag.
  22. bijvoorbeeld:
  23. Voor een bepaalde bewerking heb je gebruikers-
  24. niveau 1 nodig, maar voor een andere bewerking heb je niveau
  25. 2 nodig. Een gebruiker die beide bewerkingen mag uitvoeren
  26. heeft gebruikersniveau 1+2 = 3. MAAR: Een gebruiker die om
  27. een of andere reden alleen de tweede bewerking mag uitvoeren
  28. heeft gebruikersniveau 0+2 = 2. Dus je telt de nummers die
  29. bij bepaalde rechten horen bij elkaar op.
  30. Het nummer dat het recht geeft op een bepaalde bewerking is
  31. altijd een macht van 2.
  32. bijvoorbeeld:
  33. recht #1 (bv inloggen) heeft gebruikers niveau 2^0 = 1
  34. recht #2 (bv je eigen info veranderen) heeft gebr. niveau 2^1 = 2
  35. recht #3 (bv nieuws toevoegen) heeft gebruikers niveau 2^2 = 4
  36. recht #4 (bv members toevoegen) heeft gebruikersniveau 2^3 = 8
  37. enz.
  38. Iemand die al deze bewerkingen mag uitvoeren heeft dus
  39. gebruikersniveau 1+2+4+8 = 15 (of 2^4 - 1)
  40. Iemand die alleen recht #1 en recht #3 heeft, heeft
  41. dus gebruikersniveau 1+4 = 5
  42. */
  43. // controle op ingelogd zijn:
  44. if(isset($_SESSION['suser'])) {
  45. ?>
  46. user <b><?= $_SESSION['suser'] ?></b> is logged in.<br />
  47. <?php
  48. /*
  49.   vervolgens kijken we naar het userlevel, we vergelijken
  50.   bitsgewijs het gebruikerslevel - dit doen we met behulp van
  51.   een enkele '&' (de bitwise comparator)
  52.   *** LET OP ***
  53.   Enkel controleren met & is niet genoeg !
  54.   Stel dat je level 9 moet hebben voor een bepaalde bewerking, en je hebt
  55.   maar level 1. 1 & 9 is gelijk aan 1, en dan zou if(1 & 9) { ... } true opleveren
  56.   Je moet dus expliciet controleren of je level hoog genoeg is.
  57.   */
  58. if(($_SESSION['slevel'] & 1) == 1) {
  59. // voer code uit behorend bij recht #1
  60. ?>
  61. Je hebt recht #1.<br />
  62. <?php
  63. } else {
  64. // geef een melding dat je de acties
  65. // behorend bij recht #1 niet mag uitvoeren
  66. ?>
  67. Je hebt recht #1 NIET.<br />
  68. <?php
  69. }
  70.  
  71. if(($_SESSION['slevel'] & 2) == 2) {
  72. // voer code uit behorend bij recht #2
  73. ?>
  74. Je hebt recht #2.<br />
  75. <?php
  76. } else {
  77. ?>
  78. Je hebt recht #2 NIET.<br />
  79. <?php
  80. }
  81. if(($_SESSION['slevel'] & 4) == 4) {
  82. // voer code uit behorend bij recht #3
  83. ?>
  84. Je hebt recht #3.<br />
  85. <?php
  86. } else {
  87. ?>
  88. Je hebt recht #3 NIET.<br />
  89. <?php
  90. }
  91. if(($_SESSION['slevel'] & 8) == 8) {
  92. // voer code uit behorend bij recht #4
  93. ?>
  94. Je hebt recht #4.<br />
  95. <?php
  96. } else {
  97. ?>
  98. Je hebt recht #4 NIET.<br />
  99. <?php
  100. }
  101. // et cetera
  102. ?>
  103. <a href="logout.php">uitloggen</a><br />
  104. <?php
  105. } else {
  106. ?>
  107. Je bent op dit moment niet ingelogd.<br />
  108. <a href="login.php">inloggen</a><br />
  109. <?php
  110. }
  111. ?>
  112. </body>
  113. </html>



Zoals je ziet controleert hij eerst welke rechten je mag uitoefenen, maar dat hoeft dus niet in mijn geval. Ik wil daar gewoon controleren of de bezoeker is ingelogd of niet. Zoja: krijgt hij de vertrouwelijke informatie te zien. Zo niet moet hij de boodschap krijgen: 'Je bent op dit moment niet ingelogd.'



Verder heb ik nog een probleem, in de handleiding staat dat ik in elke pagina die ik wil beveiligen session.php moet includen. Maar als ik dat doe geeft hij mij telkens de 'error' dat de sessie al gestart is, en dat doet ie omdat er op regel 2 van session.php een sessie gestart wordt. Mag ik die tweede regel wissen?


Alvast bedankt!!

2 antwoorden

Gesponsorde links
Offline avdg - 01/09/2007 16:30 (laatste wijziging 01/09/2007 16:35)
Avatar van avdg PHP gevorderde Het staat er, je moet de code tussen de if van

  1. if(isset($_SESSION['suser'])) {
  2. ...
  3. }


steken  

Kijk naar regels 44 (begin) en 105 (einde van de blok) voor het blok ingelogd.
Offline raintjah - 01/09/2007 16:44 (laatste wijziging 01/09/2007 16:45)
Avatar van raintjah Nieuw lid Oké, het probleem met de rechten die niet nodig zijn is nu opgelost. Bedankt daarvoor avdg!

Nu nog het probleem met de sessions...


Edit: opgelost, de require tekst stond dubbel 


Bedankt allemaal!
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.185s