[php] AND / OR

Pagina: 1
Acties:

  • CoiLive
  • Registratie: Maart 2000
  • Laatst online: 23-06 09:11
Ik ben bezig met een systeempje waar het nodig is dat een aantal mensen een bepaalt stuk tekst mogen zien namelijk:

- De user die het gepost heeft (alleen die user)
- De Admin (Altijd!)

Nu kun je zoiets doen als:
if ($user_id == $user_die_het_gepost_heeft){ bla bla bla }

Maar iemand die admin is moet het natuurlijk ook altijd kunnen zien:
if ($login == admin){ bla bla bla }

Maar ik krijg ze niet gecombineerd. Dus zoiets als:
if ($user_id == $user_die_het_gepost_heeft || $login == admin){ bla bla bla }

Ik weet niet wat ik voor de || moet invullen.
De || kan niet, want dan is het OF de een OF de ander
&& kan niet, want dan moet de persoon die het wil zien persee een admin zijn.

Ik weet ook niet waar ik andere mogelijkheden kan vinden. Ik had al gekeken op php.net, maar als je niet weet waar je op moet zoeken gaat dat een beetje moeilijk.

  • supakeen
  • Registratie: December 2000
  • Laatst online: 09-09-2025
PHP:
1
2
3
4
5
if($login == admin) {
 print "blablabla";
}elseif($user_id == $user_die_het_gepost_heeft) {
 print "blablabla";
}

zoiets?

Dus als het geen admin is iets anders laten zien, maar admin ga je toch niet meegeven in de url enzo he?

Nu is hij weer goed :)

Verwijderd

PHP:
1
2
3
if(($user_id == $user_die_het_gepost_heeft) || ($login == 'admin')){
    print "Whoei, je mag het zien";
}


[edit]
zmn, neen, gaat niet werken, want dan kan alleen een admin die het zelf gepost heeft dat stukje tekst zien... moet OR of || zijn... niet &&

[edit2]
je was d'r tegelijk me mij achter gekomen :P

[ Voor 0% gewijzigd door Verwijderd op 10-08-2002 15:38 . Reden: zmn was sneller :( ]


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

dit werkt wel:
if ($user_id == $user_die_het_gepost_heeft || $login == admin){ bla bla bla }

en wat jij bedoelt is een XOR: exclusive or. je bent een man of een vrouw en niet beiden (aub geen commentaar ;) En de logische or is dus T F, F T, T T.

  • CoiLive
  • Registratie: Maart 2000
  • Laatst online: 23-06 09:11
Ja zoiets moet kunnen, maar kan dat niet makkelijker eigenlijk? Het lijkt zo omslachtig. Ik bedoel, hij moet gewoon doen:
- OF je bent die user OF je bent admin (en je mag het zien)
- En je bent de user EN je bent admin (en je mag het zien)

Is daar geen combinatie van zoals &| ofzo? :)

  • CoiLive
  • Registratie: Maart 2000
  • Laatst online: 23-06 09:11
Alarmnummer schreef op 10 augustus 2002 @ 15:35:
dit werkt wel:
if ($user_id == $user_die_het_gepost_heeft || $login == admin){ bla bla bla }

en wat jij bedoelt is een XOR: exclusive or. je bent een man of een vrouw en niet beiden (aub geen commentaar ;) En de spraaktaal or is dus T F, F T, TT.
Bij mag mag je dus een MAN een VROUW of BEIDEN, maar als je een geen mens bent mag je het niet zien :) beetje duidelijk? :+

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Als jij gebruik maakt van een || dan kunnen de volgende mensen hem zien:
-de user die het geschreven heeft
-een admin die geen user is
-een admin die wel user us

dus alle admins kunnen hem zien + de user die hem heeft geschreven, en dat wil je.

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

Doet iets met Cloud (MS/IBM)


Verwijderd

pak die van mij, dan mag je het zien als je de gebruiker bent... ben je dat niet, dan kijkt hij of je de admin bent, dus dan maakt het niets uit of je het allebei bent. PHP stopt met kijken bij de eerste TRUE, als je begrijpt wat ik bedoel...

  • CoiLive
  • Registratie: Maart 2000
  • Laatst online: 23-06 09:11
[b][message=14701234,noline]zmn schreef op 10 augustus 2002 @ 15:33
maar admin ga je toch niet meegeven in de url enzo he?
Nee natuurlijk niet, het zijn eigenlijk objecten. Maar had het even zo opgeschreven zodat het beetje duidelijk zou zijn wat ik eigenlijk wil.

  • supakeen
  • Registratie: December 2000
  • Laatst online: 09-09-2025
FiZz schreef op 10 augustus 2002 @ 15:42:
[...]

Nee natuurlijk niet, het zijn eigenlijk objecten. Maar had het even zo opgeschreven zodat het beetje duidelijk zou zijn wat ik eigenlijk wil.
Goedzo ;) De manier van jurribur doet wat jij wil :)

  • CoiLive
  • Registratie: Maart 2000
  • Laatst online: 23-06 09:11
Dit is dus wat ik wil :)
if either $a or $b is TRUE, or both are TRUE

:)

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

dat staat al eerder vermeld in dit topic

  • CoiLive
  • Registratie: Maart 2000
  • Laatst online: 23-06 09:11
Maar goed, het werk nou dus. Weet ik dat ook weer :)
Bedankt voor de hulp :>

  • CoiLive
  • Registratie: Maart 2000
  • Laatst online: 23-06 09:11
Nu moet ik er alleen nog net 1 dingentje bij hebben, en het wil weer eens niet :(
de stelling is nu:

if either $a or $b is TRUE or both are TRUE AND $c == 'delete'

Dan wordt het toch:
PHP:
1
2
3
4
if(($user_id == $user_die_het_gepost_heeft) || ($login == 'admin') && ($do == 'delete'))
{
    print "BLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAT";
}


Want dat doet die namelijk niet.

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

PHP:
1
echo "if(($user_id == $user_die_het_gepost_heeft) || ($login == 'admin') && ($do == 'delete'))";

Zal wonderen doen bij je debug actie.

En waarschijnlijk wil je (a || b) && c en niet a || b && c

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Uhh.. probeer eerst een wat te rotzooien met waarheidstabellen ed ipv ons hier mee lastig te vallen

Verwijderd

ACM: als je goed kijkt, zie je dat hij (a||b)&&c doet.

Even waarheidstabelletje gemaakt (a = $user_id, b = $login, c = $do)

abc (a||b)&&c
000 0
001 0
010 0
011 1 ($login == 'admin' & $do == 'delete')
100 0
101 1 ($user_id == $user_die_het_gepost_heeft & $do == 'delete')
110 0
111 1 ($user_id == $user_die_het_gepost_heeft & $login == 'admin' & $do == 'delete')

In het laatste geval levert de OR van $user_id en $login een true op zover ik weet (|| is de gewone OR en niet de XOR).

  • Grum
  • Registratie: Juni 2001
  • Niet online
Dat doet ie dus niet highsky:

Zonder de haakjes van de if en de 'losse items' krijg je uit:

if(($user_id == $user_die_het_gepost_heeft) || ($login == 'admin') && ($do == 'delete'))

dit:
$user_id == $user_die_het_gepost_heeft || $login == 'admin' && $do == 'delete'

hier staat duidelijk

a || b && c ipv (a || b) && c

Ik snap eigenlijk niet waarom dit topic weer zo lang moet duren ....

Als iemand em nou gewoon eventjes uitlegt dat:
De || kan niet, want dan is het OF de een OF de ander
niet klopt en dat het ook 'ok' is als het beide goed is (met evt een waarheidtabel erbij)

code:
1
2
3
4
5
6
 a | b | a||b | a&&b
---+---+------+------
 0 | 0 |   0  |   0
 0 | 1 |   1  |   0
 1 | 0 |   1  |   0
 1 | 1 |   1  |   1


Dan snapt ie et misschien.

Vervolgens wil ie:

if either $a or $b is TRUE or both are TRUE AND $c == 'delete'

a||b staat hier boven al en vervangen we door A

code:
1
2
3
4
5
6
 A | c | A&&c
---+---+------
 0 | 0 |   0
 0 | 1 |   0
 1 | 0 |   0
 1 | 1 |   1


Nu zie je dat als A waar is .. en c ook dan is A&&c ook waar.
A was a||b en die was alleen ONwaar als zowel a als b ONwaar is.

dus A&&c wat je ook kan schrijven als: (a||b)&&c
is alleen waar als:

als c waar is EN a en/of b

BTW de reden dat een logical or ook waar is als beide partijen waar zijn .. is omdat je als beide partijen waar zijn niet kan zeggen dat ie ONwaar is ...

Je wil gewoon de 1 of de ander .. en als je de ene vind (a is waar) dan boeit de ander vanaf dat moment dus al niet meer (dit is dus wel zo bij een XOR)
code:
1
2
3
4
5
6
 a | b | a XOR b
---+---+-------------
 0 | 0 |    0
 0 | 1 |    1
 1 | 0 |    1
 1 | 1 |    0


a XOR b kan je dus ook schrijven als: (a || b) && !(a&&b)

code:
1
2
3
4
5
6
 a | b | a||b | a&&b | !(a&&b) | (a||b)&&!(a&&b)
---+---+------+------+---------+-----------------
 0 | 0 |   0  |   0  |    1    |       0
 0 | 1 |   1  |   0  |    1    |       1
 1 | 0 |   1  |   0  |    1    |       1
 1 | 1 |   1  |   1  |    0    |       0


Zoals je ziet :P

O well .. genoeg logica voor vandaag ... HTH :D

Verwijderd

Oeps, bedankt... 2 haakjes aan het begin waren van de if... :)
Pagina: 1