Toon posts:

[PHP] Function vraagje

Pagina: 1
Acties:

Onderwerpen


  • winux
  • Registratie: april 2003
  • Laatst online: 19:18
Na een paar jaar niet meer met php gewerkt te hebben was ik wat aan het stoeien. Maar kom niet uit het volgende.

Ik heb het volgende stukje code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<?php
function beveiliging($onderdeel){  
$rights['news_add'] = 1;
$rights['news_edit'] = 2;
$rights['admin'] = 4;
$rights['games_delete'] = 64;
$rights['games_approve'] = 128;

$recht_uit_db = 7;

        if ($recht_uit_db & $rights[$onderdeel]){
        $toegang = 1;
        }
        
    else{
    $toegang = 0;
    
    }
    
if($toegang == 0){

    exit;
    

}
}
              
        beveiliging("admin"); //4
        echo "admin<br>";

        beveiliging("news_add"); //1
        echo "news_add<br>";
        
        beveiliging("news_edit"); //2
        echo "news_edit<br>";
                    
        beveiliging("games_delete");
        echo "games_delete<br>";
        
        beveiliging("games_approve");
        echo "games_approve<br>";
?>


Ik wil dat de functie elke keer vanaf begin gestart wordt bij elke aanroep. Zodat hij bij elke beveiling_functie opnieuw op de rechten gaat controleren.

Hoe doe ik dat?? :$

  • winux
  • Registratie: april 2003
  • Laatst online: 19:18
NMe schreef op maandag 27 september 2010 @ 23:46:
Ehm, een functie wordt per definitie vanaf het begin gestart bij elke aanroep? :?
Ja sorry ik verwoordt het verkeerd. Ik bedoel. Die exit, stop de het verloop van de pagina. Maar hoe kan ik er voor zorgen dat die wel verder gaat op moment dat de functie weer aangeroepen wordt?

  • winux
  • Registratie: april 2003
  • Laatst online: 19:18
orf schreef op maandag 27 september 2010 @ 23:45:
Met functies is een return value handiger dan een exit. In dit geval kun je een boolean teruggeven en kun je met een if(beveiliging("admin")){} kijken wat iemand mag.
Ja ik wil juist niet met groepen of statussen werken, wanneer ik een if else statement gebruik kan ik namelijk per onderdeel bepalen of de gebruiker het wel of niet mag.

  • winux
  • Registratie: april 2003
  • Laatst online: 19:18
NMe schreef op maandag 27 september 2010 @ 23:54:
[...]

Wat heeft het al dan niet gebruiken van een returnwaarde die je in een if kan gebruiken met groepen en statussen te maken? Nog los van het feit dat je blijkbaar juist wél met groepen werkt, want dat is wat "admin" en "games" in de praktijk gewoon voor jou gaan betekenen.

We hebben je al eens eerder gewezen op je inzet, en die ontbreekt nu weer. Wat begrijp je precies niet aan de manual? Heb je die er überhaupt bijgepakt?
Die games en admin zijn de bedoeling als pagina. Maar ik bedoel dat ik die if else in de functie wil verwerken. En niet in de pagina. Maar ik vindt het wel erg kort door de bocht door gelijk te zeggen dat ik geen inzet heb getoond. Ik ben de hele avond al proberen en over internet aan het zoeken. Inclusief die handleiding die je aanbeveelt. Maar ik zal wel terug gaan naar de handleiding. Want blijkbaar is het verboden om vragen te stellen hier.

  • winux
  • Registratie: april 2003
  • Laatst online: 19:18
NMe schreef op dinsdag 28 september 2010 @ 00:04:
Het is niet verboden om vragen te stellen, maar als jij na een hele avond zoeken en proberen nog steeds niet weet dat een functie bedoeld is om waardes te returnen dan heb je ofwel het verkeerde vak gekozen, ofwel je hebt niet zo goed gezocht als je zegt.

En als je geen vragen mocht stellen had je topic allang dicht gezeten. Ik ben aan het proberen je iets bij te brengen maar daarvoor moet ik eerst weten waar je denkfout zit en je dan duidelijk proberen te maken wat er fout zit. Als je dat niet persoonlijk opvat leer je er meer van. ;)
Met het verkeerde vak klopt wel, want ik doe dit als hobby en ben gewoon mezelf dingen aan het leren. Waar het waarschijnlijk fout gaat.
Ik zal het proberen niet meer persoonlijk op te vatten. Ik ben nu nogmaals de for loop en return aan het doornemen.

  • winux
  • Registratie: april 2003
  • Laatst online: 19:18
ocdaan schreef op dinsdag 28 september 2010 @ 00:16:
Niets van aantrekken joh, zo gaat dat zo vaak hier op het forum, vele vinden zichzelf godlike ;)

Ieder begin is moeilijk, ik kan me nog prima herinneren hoe het was om te leren proggen....

Ik weet niet precieas wat je probeerd te bereiken maar hier een idee

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?php

$rights['news_add'] = 1;
$rights['news_edit'] = 2;
$rights['admin'] = 4;
$rights['games_delete'] = 64;
$rights['games_approve'] = 128;

$recht_uit_db = 7;

function beveiliging($onderdeel){  
 global $rights, $recht_uit_db;

 if ($recht_uit_db == $rights[$onderdeel]){
 return true;
 }else{
 return false;
 }
    
}

if(beveiliging("admin")) {
     echo "admin<br>";
}


if(beveiliging("news_add")) {
     echo "news_add<br>";
}

?>

enz....
Bedankt voor het helpen, maar dit is niet helemaal wat ik bedoel, want ik probeer te werken met bitwise systeem. Wanneer dus de rechten 129 zijn, mag hij news_add en games_approve.

En dat werkt ook, want als ik de ik:

code:
1
2
3
4
5
6
7
8
if ($waarde_uit_db & $rights['news_add'])
      echo 'news add!<br>';
 
if ($waarde_uit_db & $rights['news_edit'])
      echo 'news edit!<br>';
 
if ($waarde_uit_db & $rights['games_approve'])
      echo 'games aprove!<br>';


krijg ik netjes news_add en games_approve en geen news_edit. Alleen wil ik dit in een function zetten zodat ik eigenlijk alleen maar bij een stukje code beveiliging(news_add) of beveiliging(games_approve) kan neerzetten. Zolang ik er per bestand gebruik, komt het wel goed. Maar ik wil de mogelijkheid om meerdere in een bestand te gebruiken.

[edit]
Vandaar dat ik met die exit; in me hoofd zit. Omdat de pagina op dat punt moet eindigen totdat ik weer opnieuw controleer met de functie. Maar volgens mij wil ik iets wat technisch niet mogelijk is |:(

[Voor 5% gewijzigd door winux op 28-09-2010 00:38]

Pagina: 1


Nintendo Switch (OLED model) Apple iPhone 13 LG G1 Google Pixel 6 Call of Duty: Vanguard Samsung Galaxy S21 5G Apple iPad Pro (2021) 11" Wi-Fi, 8GB ram Nintendo Switch Lite

Tweakers vormt samen met Hardware Info, AutoTrack, Gaspedaal.nl, Nationale Vacaturebank, Intermediair en Independer DPG Online Services B.V.
Alle rechten voorbehouden © 1998 - 2021 Hosting door True

Tweakers maakt gebruik van cookies

Bij het bezoeken van het forum plaatst Tweakers alleen functionele en analytische cookies voor optimalisatie en analyse om de website-ervaring te verbeteren. Op het forum worden geen trackingcookies geplaatst. Voor het bekijken van video's en grafieken van derden vragen we je toestemming, we gebruiken daarvoor externe tooling die mogelijk cookies kunnen plaatsen.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Forum cookie-instellingen

Bekijk de onderstaande instellingen en maak je keuze. Meer informatie vind je in ons cookiebeleid.

Functionele en analytische cookies

Deze cookies helpen de website zijn functies uit te voeren en zijn verplicht. Meer details

janee

    Cookies van derden

    Deze cookies kunnen geplaatst worden door derde partijen via ingesloten content en om de gebruikerservaring van de website te verbeteren. Meer details

    janee