Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][Smarty] ukrywanie elementu dla userów
Cromwell
post 20.10.2009, 16:25:16
Post #1





Grupa: Zarejestrowani
Postów: 63
Pomógł: 0
Dołączył: 1.09.2009

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


Mam chyba proste pytanie związane ze Smarty.

Mam w php funkcję admin() oraz user().
Wstawiając to do szablonu .tpl, działa dobrze. Np
  1. {if user()}
  2. coś tam
  3. {/if}

Jest widoczne tylko dla userów zalogowanych.

Mam też element, który wyświetla się, jeśli są dane:
  1. {if $dane ne ""}
  2. treść
  3. {/if}


I teraz chcę zrobić tak, aby element nie wyświetlał się, jeśli użytkownik jest zalogowany.
Próbowałem coś znaleźć w manualu, jednak nici. Szukałem przede wszystkim tutaj http://www.smarty.net/manual/en/language.function.if.php


Druga rzecz:
Chcę, aby po wejściu na pewien adres, ten sam element się chował.
Problem jest taki, że strona wtedy nie wczytuje się z odrębnego pliku, a jest to część index.php.
Najlepiej by było, gdyby była możliwość ukrycia tego elementu, jeśli w adresie strony występuje określony ciąg.
Tylko nie mam pojęcia jak to zrobić, nie wiem nawet czego szukać w manualu.
Go to the top of the page
+Quote Post
potreb
post 20.10.2009, 16:28:04
Post #2





Grupa: Zarejestrowani
Postów: 1 568
Pomógł: 192
Dołączył: 7.03.2005
Skąd: Warszawa

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


Zaprzeczeniem jest !user() && $dane


--------------------

Go to the top of the page
+Quote Post
_olo_1984
post 20.10.2009, 16:41:05
Post #3





Grupa: Zarejestrowani
Postów: 289
Pomógł: 77
Dołączył: 5.08.2006

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


jeżeli ten system logowania oparty jest na sesji, to w szablonie możesz zrobić:
  1. $_SESSION['zalogowany'] = 1; // powiedzmy jeżeli się poprawnie zalogował
  2.  
  3. //szablon.tpl
  4. {if $smarty.session.zalogowany != 1} // lub !$smarty.sess....
  5.  
  6. {/if}


do do drugiego problemu to też trudno mi powiedzieć nie widząc kodu, też wykorzystałbym tablicę $_SESSION a dodatkowe info być może znajduje się w $_SERVER


--------------------
awake
Go to the top of the page
+Quote Post
Puzi
post 20.10.2009, 16:47:20
Post #4





Grupa: Zarejestrowani
Postów: 231
Pomógł: 17
Dołączył: 26.08.2007

Ostrzeżenie: (10%)
X----


Najprościej bedzie Ci to zrobić tak: za pomocą php sprawdzasz czy użytkownik zalogowany i wysyłasz zmienna do szablonu... Np. Jesli zalogowany to wysyłasz 1 a jak nie to 0... I teraz w szablonie sprawdzasz zawartość zmiennej... {if $zmienna == 1}tu co ma sie wyświetlić jesli zalogowany{\if}
Go to the top of the page
+Quote Post
Cromwell
post 20.10.2009, 17:28:43
Post #5





Grupa: Zarejestrowani
Postów: 63
Pomógł: 0
Dołączył: 1.09.2009

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


Dobra. Z ukrywaniem poradziłem sobie trochę na okrętkę, ale ważne że działa.
Dałem prosty kod
  1. {if user()}
  2. treść dla usera
  3. {else}
  4. treść dla niezarejestrowanych
  5. {/if}

Przyznam, że aż mi głupio, że na to wcześniej nie wpadłem.

Co do drugiego..
Wygląda to tak: jest plik index.php, gdzie są odwołania do różnych 'adresów'.
  1. switch($dzial) {
  2. case 'start': $file = "start.php"; break;
  3. case 'grupy': $file = "grupy.php"; break;
  4. case 'about': $file = "about.inc.php"; break;
  5. itd.

Wcześniej źle napisałem, że nie odwołuje się do żadnego pliku.
Dalej idzie to przez .htaccess:
  1. RewriteRule ^_start/$ index.php?dzial=start[L]
  2. RewriteRule ^_grupy/$ index.php?dzial=grupy[L]
  3. RewriteRule ^_about/$ index.php?dzial=about[L]


Czyli ostatecznie uzyskuję adres - adres_strony/_grupy

I teraz zastanawiam się jak zrobić, aby ukrywało, gdy user jest na stronie _grupy. Myślałem o skorzystaniu z $_SERVER, jednak tutaj wyświetli mi chyba tylko adres_strony.
Jakiś pomysł?
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 18.06.2025 - 13:05