Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [smarty] nieodnajdywanie sesji
Forum PHP.pl > Forum > Przedszkole
Regyam
Witam,
zaczynam ze smartami i mam taki problem. Oto kod ktory dzialal mi na moim systemie szablonowym.
  1. <?php
  2. if(!isset($_SESSION[login]) || $logout =="1" ){
  3. logowanie();
  4. }else{
  5. po_logowaniu();
  6. }
  7. ?>

Wiec postanowilem to wdrozyc do smarty, oto fragment mojego pliku header.tpl:
  1. <?php
  2. {php}
  3. function logowanie()
  4. {
  5. print 'login: <form action="x.php"><input type="text" name="login" class="login" /> hasło: <input type="password" name="pass" class="haslo" /><input class="loguj" type="image" src="i/logowanie_set.png" />
  6. </form>';
  7. }
  8. function po_logowaniu()
  9. {
  10. print "zalogowany jako: <b>".$_SESSION[login]."</b>, <a href=\"wyloguj.html\">wyloguj</a>";
  11. }
  12. if(isset($_SESSION[login])){
  13. po_logowaniu();
  14. }else{
  15. logowanie();
  16. }
  17. {/php}
  18. ?>

Kiedy sie zaloguje pojawia sie blok pologowaniu, ale jesli przejde na natspena strone w smartach to pojawia sie panel logowania znowu.
Jako ze mam jeszcze na serwerze stary system szablonow tongue.gif to jezeli wpisze adres strony ze starego systemu to pokazuje mi blok po zalogowaniu. Czyli sesja istnieje tylko nie wiem czemu smarty ja jakos gubi. Moze ktos ma jakis sposób? Albo mial taki problem.
Gość
No to teraz zacznij jeszcze raz od przeczytania dokumentacji i przykładów ze smarty. Bo od początku źle do tego podchodzisz.
Regyam
wiem o co ci chodzi ale robiac assigny itp nie dzialalo w ogole a tu chociaz dziala po czesci a powinno calkowicie
-Dape-
  1. // nagłówek strony
  2.  
  3. $smarty = new Smarty();
  4.  
  5.  
  6. <?php
  7. if(!isset($_SESSION[login]) || $logout =="1" ){
  8. $smarty->display('logowanie.tpl');
  9. }else{
  10. $smarty->display('po_logowaniu.tpl');
  11. }
  12. ?>


lub

w 1-szym pliku :
  1. <?php
  2. if(!isset($_SESSION[login]) || $logout =="1" ){
  3.  
  4. $smarty->display('strona.tpl');
  5. }else{
  6.  $smarty->assign('zalogowany','1');
  7. $smarty->display('strona.tpl');
  8. }
  9. ?>


W strona.tpl :
  1. {if $zalogowany eq '1'}
  2. CZESC PO ZALOGOWANIU
  3. {else}
  4. LOGOWANIE
  5. {/if}


I ot cala filozofia. Generalnie uzywanie kodu php wewnatrz smarty (ogolnie wewnatrz szablonow) tak naprawde wypacza sama idee uzywania szablonow zewnetrznych. W takim wypadku nie ma sensu ich uzywac.
Regyam
a wiec zrobilem tak: do pliku configa ktory jest dolaczany do kazdej strony smartow wpisalem tak:
  1. <?php
  2. if(!isset($_SESSION[login]) || $logout =="1" ){
  3. $smarty->assign('zalogowany','0');
  4. }else{
  5. $smarty->assign('zalogowany','1');
  6. $smarty->assign('login', $_SESSION[login]);
  7. }
  8. ?>

i teraz w pliku header.tpl ktory jest dolaczany do kazdego tpla poszczegolnej strony wpisalem tak:
  1. <?php
  2. {if $zalogowany eq 1}
  3. zalogowany jako:.....{$login}
  4. {else}
  5. formularz logowania
  6. {/if}
  7. ?>

No i teraz tak jezeli sie loguje to za pierwszym razem pokazuje mi sie ladnie bloczek ze zalogowany jako. Ale jesli przeladuje za nastepnym razem strone to juz wyswietla mi sie formularz logowania spowrotem. Co w takm razie jest zle questionmark.gif

nikt mi nie moze pomoc?
qqrq
Wygląda na to, że nigdzie na początku nie dałeś session_start().
-Regyam-
session_start jest w pliku login.php tyle chyba powinno byc bo jak dodam do index.php no to sie psuje strona a error jest zwiazany z tym wlasnie dodanym session_start. Moze to o cos innego chodzi?
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.