Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][Smarty] ukrywanie elementu dla userów
Forum PHP.pl > Forum > Przedszkole
Cromwell
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.
potreb
Zaprzeczeniem jest !user() && $dane
_olo_1984
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
Puzi
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}
Cromwell
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ł?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.