ďťż

[php] Cookies

       

Podstrony


telcocafe

<? if(!empty($_GET[wyloguj])){ if($_GET[wyloguj] == "1"){ function wyloguj() { setcookie("adminlogin", "0"); echo "<script language=\"Javascript\"> location.href = 'login.php'; </script>"; return 0;}; wyloguj(); }} if ($_COOKIE['adminlogin'] <> "1"){ echo "<script language=\"Javascript\"> location.href = 'login.php'; </script>"; }else{ if ($_COOKIE['adminlogin'] == "1") { echo "<h3>Panel administratora</h3>"; /*Tutaj będą wszystkie narzędzia służące do administracji tą witryną*/ echo "<a href=\"./panel.php?wyloguj=1\">Wyloguj mnie</a>"; }}?>
To jest kod panelu administracyjnego małego forum które piszę. Dlaczego gdy kliknę na wyloguj to funkcja wyloguj() nie zmieni wartości ciasteczka "adminlogin" na "0"?? I jeszcze takie pytanko: czy na końcu funkcji w php trzeba pisać return?? Bo ostatnio czytałem kurs c++ i się przyzwyczaiłem :)
Użytkownik dh_maniak edytował ten post 21 maj 2005, 16:35


Po pierwsze formatuj jakoś kod (wcięcia itp. to dobry nawyk), bo straszne zamieszanie jest.
Return uzywasz wtedy gdy chcesz wyjść z funkcji, lub wyjść i zwrócić jakąś wartość, zresztą w C++ jest tak samo.
A co do działania skryptu: nie zapisuj do ciastek zmiennych wskazujących na to, czy jesteś zalogowany jako admim. Takie rzeczy przechowuj w zmiennych sesji, bo do ciastek każdy na swoim kompie (albo w cukierniczym :P) ma dostęp. W ciastkach zapamiętuj tylko ID sesji, w której masz ważne zmienne. Mały przykład zapamiętywania sesji:

if (isset($_COOKIE['session_id'])) session_id($_COOKIE['session_id']); session_start(); setcookie('session_id', session_id(), time()+86400*30);

Uruchamiaj to zawsze na początku skryptu. Dzięki temu w ciasteczkach zostanie zapamiętany ID sesji, a przy odświerzeniu strony sesja o tym ID (wraz ze zmiennymi) zostanie przywrócona. Teraz możesz zapisać sobie zmienną określającą czy jesteś zalogowany jako admin w sesji:

$_SESSION['zalogowany'] = TRUE;

...no i korzystać z niej kiedy chcesz. Po więcej odsyłam do artów o sesjach, jest tego w necie.

A tak szczerze mówiąc to nawet nie sprawdzałem tego kodu :P

Hm nie wiem, może to wina przeglądarki. Czasem aby ciastko zadziałało trzeba odświeżyć stronę, chociaż u ciebie javascript o to chyba dba. Sprawdź czy funkcja wyloguj jest w ogóle uruchamiana, może te 2 warunki przed jej wykonaniem nigdy nie zachodzą.



A mógłbyś chociaż skomentować ten kod zapamiętujący sesję? Bo dopiera uczę się php i niezbyt rozumiem o co w nim chodzi.



Wersja czytana:
Jeśli istnieje ciastko o nazwie 'session_id' ustaw ID sesji na wartość tego ciacha.
Rozpocznij sesję (zostanie załadowana sesja o wcześniej ustawionym ID).
Ustaw ciasteczko o nazwie 'session_id', przypisz mu ID obecnej sesji i ustaw czas przeterminowania się ciastka na 30 dni.

Dzięki MatroX. Temat do zamknięcia.

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nvm.keep.pl

  • Sitedesign by AltusUmbrae.