mest effektive metode?

Tags:    php

<< < 12 > >>
Hejsa.

Jeg sidder med et bruger system, som skal give brugeren nogle bestemme bogstaver ud for hvilken rettigheder, som den bruger er blevet tildelt.

Jeg sad med dette før:

Fold kodeboks ind/udPHP kode 


Det virker fint hvis man kun sætter ét flueben.

Men hvis der er flere, så bliver den første i alfabetet brugt. Og hvis jeg skal skrive if(isset($_POST['admin1']) AND admin2,admin3 etc)) { }

Til ca 14 stk bliver jeg først færdig næste jul. Så sad og tænkte på om der var en måde at gøre dette nemmere på?

- Magnus.



$rights .= "J ";

Ikke sikker men måske ?



$rights .= "J ";

Ikke sikker men måske ?


Har jeg også prøvet, så vidt jeg husker.

Når ja, jeg skal ikke bruge elseif jeg skal bare skrive "if" :)

Prøver det lige.

Og der skal .= med. Tak for det :)



Indlæg senest redigeret d. 13.11.2009 13:02 af Bruger #15047
hvis $rights er et array, så bør du appende til den som et array snarere end som en string.

altså
Fold kodeboks ind/udKode 

istedet for
Fold kodeboks ind/udKode 


Når du så skal se om brugeren har rettigheder der kræver B, siger du
Fold kodeboks ind/udKode 




Indlæg senest redigeret d. 13.11.2009 13:09 af Bruger #8223
Du kan også bruge bitmasker.

Fold kodeboks ind/udKode 


Du tjekker så om brugeren har en rettighed med:
Fold kodeboks ind/udKode 




Indlæg senest redigeret d. 13.11.2009 13:27 af Bruger #2695
Tak for svarende :)

Jeg kigger lige på dem begge :)



Hvad med:
I din kode der modtager post:
Fold kodeboks ind/udKode 


I din kode der laver din form:
Fold kodeboks ind/udKode 


rigths.php
Fold kodeboks ind/udKode 


Burde du bare kunne fylde arrayet i rigths.php ud, dette kan også ændres til at følge foreslaget om at indkode alle rigths i et enkelt tal som en foregående post foreslog.



Nørden jeg tror det er en tand over min erfaring :)

Men jeg har et problem med følgende:

Jeg har dette:
Fold kodeboks ind/udPHP kode 


Når jeg så checker om der f.eks. L i $rights bruger jeg:

if(in_array('L', $rights)) { }

Men jeg gemmer $rights i min MySQL database, når den så kommer ud hedder den bare "Array" og ikke mere. Jeg ved ikke om det er metoden jeg skriver det ind på eller hvad det er?

- Magnus.



$rights.=" ";

Bruges til at append til en streng som det allerede er sagt brug $rights[]=" "; for at ligge værdier i et array. Hvad php gør hvis du skriver $rights.=" "; og $rights er et array ved jeg ikke.

Hvis du vil gemme et array i en database skal du converterer det til en streng:
serialize($rights);
at hente det ud igen er så
unserialize($rights);
Der er dog den ulempe ved det at du ikke kan fortælle databasen hvor stor det kolonne med rights skal være.

Alternativ 1: kan du indkode rigths som et tal som allerede er foreslået.

Alternativ 2: gem hvert element i rigths som en række i en user_rigths tabel med userid:

Alternativ 3: gem hvert element for i rigths som en værdi i en kolonne for hver right.









Hvis du vil gemme et array i en database skal du converterer det til en streng:


...eller bibeholde det som adskildte værdier i hver sin række i en tabel.



Inde i PHPmyadmin står der A B C D E F G og så videre. Så forstår ikke helt :(


Har også prøvet med $rights[] = "A ";
Lige præcis det samme resultat, borset fra at i min MySQL stod der bare "Array". :(

Det forvirrer mig gevaldigt! Men jeg vil lige prøve med det der serialize().



<< < 12 > >>
t