Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] hierarchia elementów
Chemiq
post
Post #1





Grupa: Zarejestrowani
Postów: 105
Pomógł: 0
Dołączył: 16.07.2006

Ostrzeżenie: (0%)
-----


mam niewielki problemik. otóż zdefiniowałem takie coś:
  1. <?php
  2. define(GUEST, !$_SESSION['login']);
  3. define(USER, $_SESSION['login']);
  4. define(MOD, $dane_user['status']=="mod");
  5. define(J_ADMIN, $dane_user['status']=="j_admin");
  6. define(ADMIN, $dane_user['status']=="admin");
  7. define(S_ADMIN, $dane_user['status']=="s_admin");
  8. ?>


jak zrobić hierarchię tych elementów, tzn. żeby GUEST < USER < MOD itd.(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)
Go to the top of the page
+Quote Post
abc667
post
Post #2





Grupa: Zarejestrowani
Postów: 229
Pomógł: 0
Dołączył: 29.05.2007

Ostrzeżenie: (0%)
-----


trochę nie rozumiem tego zapisu

  1. <?php
  2. $dane_user['status']=="mod"
  3. ?>


zresztą tego też

define(GUEST, !$_SESSION['login']);
define(USER, $_SESSION['login']);

przecież GUEST i USER będą miał różną wartość w zależności od tego czy ktoś bedzie zalogowany

  1. <?php
  2. define(GUEST, 0);
  3. define(USER, 1);
  4. define(MOD, 2);
  5. define(J_ADMIN, 3);
  6. define(ADMIN, 4);
  7. define(S_ADMIN, 5);
  8. ?>

i wtedy GUEST < USER ...
Go to the top of the page
+Quote Post
Chemiq
post
Post #3





Grupa: Zarejestrowani
Postów: 105
Pomógł: 0
Dołączył: 16.07.2006

Ostrzeżenie: (0%)
-----


nie o to chodzi. jeżeli nie rozumiesz zapisu w funkcji define to nie wymyślaj jakichś dziwactw.

w roli wyjaśnienia dla Ciebie:
funkcja define przypisuje nazwę (w tym wypadku GUEST, USER itd.) jeżeli warunek po przecinku jest spełniony (czyli !$_SESSION['login'], $_SESSION['login'], $dane_user['status']=="mod" itd.).
więc jeżeli zrobię
  1. <?php
  2. define(GUEST, 0);
  3. define(USER, 1);
  4. define(MOD, 2);
  5. define(J_ADMIN, 3);
  6. define(ADMIN, 4);
  7. define(S_ADMIN, 5);
  8. ?>

to będę mógł zamiast liczb 1, 2, 3... używać operatorów GUEST, USER itd. a nie o to mi zupełnie chodzi
Go to the top of the page
+Quote Post
abc667
post
Post #4





Grupa: Zarejestrowani
Postów: 229
Pomógł: 0
Dołączył: 29.05.2007

Ostrzeżenie: (0%)
-----


Cytat
nie o to chodzi. jeżeli nie rozumiesz zapisu w funkcji define to nie wymyślaj jakichś dziwactw.


tak?
jak dla mnie to define przypisuje wartość stałej false

  1. <?php
  2. define('S', false);
  3.  
  4. if(defined('S')) echo 'zdefiniowana';
  5. ?>


natomiast
  1. <?php
  2. define(MOD, $dane_user['status']=="mod");
  3. define(J_ADMIN, $dane_user['status']=="j_admin");
  4. define(ADMIN, $dane_user['status']=="admin");
  5. define(S_ADMIN, $dane_user['status']=="s_admin");
  6. ?>

3 stałe będą miały wartość false a jeden będzie miał true

edit
powiedz jak chcesz to wykorzystywać

Ten post edytował abc667 9.06.2007, 10:33:13
Go to the top of the page
+Quote Post
Chemiq
post
Post #5





Grupa: Zarejestrowani
Postów: 105
Pomógł: 0
Dołączył: 16.07.2006

Ostrzeżenie: (0%)
-----


chodzi mi dokładnie o takie coś:
każdy użytkownik ma przypisany status (mod, j_admin itd.) w polu `status` w bazie danych. admin może mieć wyższe uprawnienia niż user (logiczne (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) ). w związku z tym admin może widzieć to czego nie widzi user. jeżeli napiszę takie coś (względem moich wartości funkcji define):
  1. <?php
  2. if (ADMIN) {
  3.  //treść
  4. }
  5. ?>

to wtedy treść będzie widział tylko i wyłącznie admin i będzie ok.

ale jeżeli napiszę takie coś:
  1. <?php
  2. if (USER) {
  3.  //treść
  4. }
  5. ?>

to wtedy treść zobaczy TYLKO user a admin nie będzie jej widział. dlatego chcę utworzyć jakąś hierarchię, która ustali że admin jest na wyższym stopniu i też może widzieć to co user.
Go to the top of the page
+Quote Post
abc667
post
Post #6





Grupa: Zarejestrowani
Postów: 229
Pomógł: 0
Dołączył: 29.05.2007

Ostrzeżenie: (0%)
-----


  1. <?php
  2. define('GUEST', !$_SESSION['login']);
  3. define('USER', $_SESSION['login']);
  4. define('MOD', false);
  5. define('J_ADMIN', false);
  6. define('ADMIN', false);
  7. define('S_ADMIN', false);
  8.  
  9.  
  10. if(in_array($dane_user['status'], array("mod", "j_admin", "admin", "s_admin")))
  11. {
  12. define('MOD', true);
  13. if($dane_user['status'] != "mod")
  14. {
  15. define('J_ADMIN', true);
  16. if($dane_user['status'] != "j_admin")
  17. {
  18. define('ADMIN', true);
  19. if($dane_user['status'] != "admin")
  20. define('S_ADMIN', true);
  21. }
  22. }
  23. }
  24. ?>
Go to the top of the page
+Quote Post
Chemiq
post
Post #7





Grupa: Zarejestrowani
Postów: 105
Pomógł: 0
Dołączył: 16.07.2006

Ostrzeżenie: (0%)
-----


mógłbyś wytłumaczyć co napisałeś bo nie bardzo rozumiem jak to mi może pomóc. jak dla mnie to jest w dzialaniu dokładnie to samo co napisałem na początku:
  1. <?php
  2. define(GUEST, !$_SESSION['login']);
  3. define(USER, $_SESSION['login']);
  4. define(MOD, $dane_user['status']=="mod");
  5. define(J_ADMIN, $dane_user['status']=="j_admin");
  6. define(ADMIN, $dane_user['status']=="admin");
  7. define(S_ADMIN, $dane_user['status']=="s_admin");
  8. ?>


więc nie rozumiem po co aż tak kombinować
Go to the top of the page
+Quote Post
abc667
post
Post #8





Grupa: Zarejestrowani
Postów: 229
Pomógł: 0
Dołączył: 29.05.2007

Ostrzeżenie: (0%)
-----


twoje działa tak

jeżeli przykładowo ktoś jest junior adminem to MOD ma przypisaną wartość false czyli jak napiszesz if(MOD) wtedy jadmin tego nie zobaczy
u mnie najpierw wszystkie rangi mają wartość false potem sprawdzamy czy user ma przypisaną którąś, jeśli ma którąś to na pewno ma MOD lub wyżej więc definiujemy MOD i sprawdzamy czy ma moda, jeżeli nie ma to znaczy że ma którąś wyższą a więc na pewno ma jadmina, definiujemy go i sprawdzamy czy go ma jeśli nie to ma wyższą itd.

i wtedy jak użyjesz
  1. <?php
  2. if(J_ADMIN) { }
  3. ?>

zobaczą to wszyscy z rangą j_admin i wyższymi
Go to the top of the page
+Quote Post
Chemiq
post
Post #9





Grupa: Zarejestrowani
Postów: 105
Pomógł: 0
Dołączył: 16.07.2006

Ostrzeżenie: (0%)
-----


teraz rozumiem (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) zaraz sprawdzę czy działa (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 25.08.2025 - 06:38