login  Naam:   Wachtwoord: 
Registreer je!
 Forum

[Php]Paginascript(2)

Offline Simax - 27/02/2008 13:15 (laatste wijziging 27/02/2008 13:16)
Avatar van SimaxOnbekend Na aanleiding van topic: 'http://www.sitemasters.be/forum/2/27452' heb ik twee functies geschreven.

  1. function rechten()
  2. { $standaard = array("home","leden");
  3. $admin = array("agenda");
  4. $gebruiker = array("fotos");
  5.  
  6. if(isset($_SESSION["id"]))
  7. {
  8. if($_SESSION["rank"] == "admin")
  9. {
  10. $pages = $standaard + $admin;
  11. }
  12. else
  13. {
  14. $pages = $standaard + $gebruiker;
  15. }
  16. }
  17. else
  18. {
  19. $pages = $standaard;
  20. }
  21. }
  22.  
  23. function pages()
  24. {
  25. rechten();
  26. if(isset($_GET["page"]))
  27. {
  28. if(in_array($_GET["page"], $pages))
  29. {
  30. include $_GET["page"].".php";
  31. }
  32. }
  33. else
  34. {
  35. echo "Je hebt niet genoeg rechten.";
  36. }
  37. }


Echter krijg ik een error..
Citaat:
Warning: in_array() [function.in-array]: Wrong datatype for second argument in..


Iemand die mij kan helpen?
Alvast bedankt .

15 antwoorden

Gesponsorde links
Offline Bart - 27/02/2008 13:19
Avatar van Bart PHP expert In je functie pages() het volgende zetten:
global $pages;
Offline Simax - 27/02/2008 13:34 (laatste wijziging 27/02/2008 13:48)
Avatar van Simax Onbekend Is het ok mogelijk om het volgende te gebruiken?

  1. $pages = array();
  2.  
  3. $pages['admin']['home'] = 1; //Mag pagina zien.
  4. $pages['gebruiker']['home'] = 0; //Mag pagina niet zien.


  1. if(isset($_GET["page"]))
  2. {
  3. $page = $_GET["page"];
  4. $rank = $_SESSION["rank"];
  5.  
  6. if($pages["$rank"]["$page"] == 1)
  7. {
  8. if(in_array($_GET["page"], $pages))
  9. {
  10. include $_GET["page"].".php";
  11. }
  12. }
  13. else
  14. {
  15. echo "Je hebt niet genoeg rechten.";
  16. }
  17. }
  18. else
  19. {
  20. echo "Ongeldige pagina opgegeven.";
  21. }
Offline Mad_Mike - 27/02/2008 13:50
Avatar van Mad_Mike PHP beginner kom je snel genoeg achter door te proberen / testen 
Offline Jurgo - 27/02/2008 13:53
Avatar van Jurgo PHP interesse Misschien kun je dit gebruiken:
Functie:
  1. function permissies($permissie = NULL, $pagina)
  2. {
  3. if($_SESSION['gebruikersnaam'] != '')
  4. {
  5.  
  6. if($permissie)
  7. {
  8. $query_permissie = "SELECT $pagina FROM `permissies`
  9. WHERE id = '".$_SESSION['id']."'";
  10. $mysql_permissie = mysql_query($query_permissie) or die(mysql_error());
  11. while ($fetch_permissie = mysql_fetch_assoc($mysql_permissie))
  12. {
  13. $db_permissie = $fetch_permissie[$pagina];
  14. }
  15.  
  16. if ($db_permissie == $permissie or $_SESSION['gebruikersnaam'] == 'backupadmin')
  17. {
  18. return true;
  19. }
  20.  
  21. else
  22. {
  23. return false;
  24. }
  25. }
  26. }
  27. else {
  28. return false;
  29. }
  30. }


en dan zet je in elke pagina:
  1. if (permissies(2, 'home') or (permissies(1, 'admin')))
  2. {
  3. }
Offline Simax - 27/02/2008 14:30 (laatste wijziging 27/02/2008 14:30)
Avatar van Simax Onbekend Zoals ik al aangaf wil ik graag alles controleren binnen de index..

rank van de gebruiker.
- admin(ingelogd) = alle paginas.
- gebruiker(ingelogd) = alle paginas, behalve admin paginas.
- standaard(niet ingelogd) = standaard paginas.

de toegestane paginas
- rechten = weergeven.
- geen rechten = error.
Offline nielsvdwal - 27/02/2008 16:02
Avatar van nielsvdwal PHP gevorderde je kan wel alles willen controleren op de index.. maar je zult toch nog op elke pagina een check moeten doen.. anders kunnen mensen gewoon inplaats van index.php?pagina=beveiligd gewoon /pages/beveiligd.php doen.. en dan heb je nog niks aan je beveiliging op je index..
Offline Rens - 27/02/2008 16:13
Avatar van Rens Gouden medaille

Crew algemeen
In je functie 'rechten' doe je "return $pages;".
Vervolgens zet je in je functie pages "$pages = rechten();".
Dan werkt het ook 
Offline Giant - 27/02/2008 17:10
Avatar van Giant PHP beginner
nielsvdwal schreef:
je kan wel alles willen controleren op de index.. maar je zult toch nog op elke pagina een check moeten doen.. anders kunnen mensen gewoon inplaats van index.php?pagina=beveiligd gewoon /pages/beveiligd.php doen.. en dan heb je nog niks aan je beveiliging op je index..


daarvoor hebben ze PHP.net: Define uitgevonden 
Offline nielsvdwal - 27/02/2008 17:18
Avatar van nielsvdwal PHP gevorderde @Giant.. oftewel.. het moet nog een keer gecheckt worden.. ..
Offline Simax - 27/02/2008 17:19
Avatar van Simax Onbekend @Giant, Hoe zou jij dit doen dan? 
Offline Giant - 27/02/2008 17:27
Avatar van Giant PHP beginner in je index zet je
  1. if(!defined('InDeX') || 'InDeX' != true){
  2. define('InDeX', true);
  3. }

en op al je andere pagina's(die je dan wel op je index moet includen) zet je:
  1. if(!defined('InDeX') || 'InDeX' != true){
  2. die("HACKER!");
  3. }


zo kun je niet meer direct naar /pages/file.php 
Offline Simax - 27/02/2008 17:35
Avatar van Simax Onbekend Heb je een uitgebreid voorbeeld? 
Offline Giant - 27/02/2008 17:45
Avatar van Giant PHP beginner index.php
  1. <?php
  2. if(!defined('InDeX') || 'InDeX' != true){
  3. define('InDeX', true);
  4. }
  5. include"pages/blaat.php";
  6. ?>


blaat.php
  1. if(!defined('InDeX') || 'InDeX' != true){
  2. die("HACKER!");
  3. }
  4.  
  5. echo "blaat";
  6. ?>

zoiets? 
Offline Simax - 27/02/2008 17:48 (laatste wijziging 27/02/2008 23:45)
Avatar van Simax Onbekend Dit is het gehele script?
Offline marten - 28/02/2008 08:37
Avatar van marten Beheerder dan ga je maar in dat topic verder

slotje
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.322s