Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Sesje - utzrymanie
Forum PHP.pl > Forum > Przedszkole
la_chica_bonita
hejka, mam taki problem, że jak juz uzytkownik sie zaloguje, to normalnie widzi to co powienien. problem jest gdy uzytkownik odswieza strone - wtedy wydaje sie jakby byl wylogowany, a gdy 2 raz odswiezy strone to jest znowu zalogowany.. dziwne.. czy mozecie mi podpowiedziec jak temu zaradzic?

a przy okazji jak zrobic, zeby zerwac sesje, gdy uzytkownik nie korzysta z systemu np przez 15 minut od ostatniego "klikniecia"?

helpka
hiszpanespaniol
hejka helpka

żywotność sesji możesz sobie ustawić za pomocą session.cookie_lifetime. jest to napisane w manualu.

Cytat
session.cookie_lifetime określa długość życia w sekundach ciastka przesyłanego do przeglądarki. Wartość 0 oznacza "dopóki przeglądarka nie została zamknięta". Domyślnie 0.


dotyczy to pliku php.ini

co do tego odświeżania, to musisz podać więcej konkretów oprócz tych, że Ci się wydaje. np kod PHP

edit: 15 x 60 = 900
la_chica_bonita
hmm, ze niby mam w php.ini zmienic ta zywotnosc? a nie w kodzie gdzies?

a jesli chodzi o kod.. to mam takie funkcje :

  1. <?php
  2. function tryLogin($user, $pwd) {
  3. // Proba zalogowania jako uzytkownik $user , ktory podal haslo $pwd    
  4. //    $pwd = ($pwd); // szyfrowanie hasla
  5.  
  6.    if (getRow("SELECT * FROM uzytkownicy WHERE login = '$user' AND haslo = '$pwd'"))
  7.        return true;
  8.    else
  9.        return false;
  10. }
  11.  
  12. function login($user) {
  13. // Logowanie na podane wczesniej dane powiodlo sie - zaloguj do systemu
  14.  
  15.    if (isset($_SESSION['user'])) // istenieje stara sesja - usun
  16.        unset($_SESSION['user']);
  17.    else {
  18.        // rozpoczecie nowej sesji, ktorej wartosciami sa dane uzytkownika
  19.        $_SESSION['user']['name'] = $user;
  20.        $rs = getRow("SELECT * FROM uzytkownicy WHERE login = '$user'");
  21.        $_SESSION['user']['kpx'] = $rs['kpx']; // identyfikator uzytkownika
  22.        //echo $_SESSION['user']['kpx'];
  23.    }
  24. }
  25.  
  26. function logoff() {
  27. //Wylogowanie, czyli zniszczenie sesji uzytkownika
  28.    if (isset($_SESSION['user'])) // istenieje stara sesja - usun
  29.        unset($_SESSION['user']);
  30. // tutaj trzeba ustawic ciasteczko, ktore bedzie za nas wylogowywalo po godzinie?
  31. ?>


no i dupka
hiszpanespaniol
tu są same funkcje. odświeżenie strony gdzie w skrypcie php są same funkcje, nic nie zmieni. miałem raczej na myśli kod w którym wywołujesz te funkcje. no ale domyślam się że chodzi o problem w Twojej funkcji login.

Funkcja ta zapewne wywołuje się przy każdym odświeżeniu strony. Czyli jesli użytkownik jest niezalogowany, to wykonuje się to, co jest w "else" Twojej funkcji. Ten sam użytkownik jeśli odświeży stronę (i pewnie wywoła tą funkcję ponownie), to skrypt wykona to, co jest w "if" tej funkcji, czyli się wyloguje. Musisz jakoś zmienić tą funkcję albo wywoływać ją dopiero po kliknięciu w coś, a nie odrazu ze strony.
la_chica_bonita
  1. <?php
  2. if (isset($_POST['send'])) {
  3.    if (empty($_POST['username']) || empty($_POST['pwd'])) // nie podano ktoregos z pol
  4.        $info = info('err', 'Zalogowanie niemożliwe - podaj login bądź hasło');
  5.    else {
  6.        if (tryLogin($_POST['username'], $_POST['pwd'])) // proba logowania
  7.            // sukces
  8.            login($_POST['username']);
  9.        else // porazka
  10.            $info = info('err', 'Zalogowanie niemożliwe - błędny login bądź hasło');    
  11.    }
  12. ?>


oto moje wywolanie funkcji logujacej - czyli po kliknieciu w przycisk loguje mnie..

a no pozniej po tym mam jeszcze

  1. <?php
  2. if (isset($_SESSION['user'])) {
  3. // dzialania
  4. else - niezlaogowany
  5. ?>


wlansie zauwazylam, ze mam podobny problem z wylogowywaniem z systemu.. shit..

w kodzie mam
  1. <?php
  2. logoff();
  3. ?>


hmm jak temu zaradzic?
mike
A gdzie w tym wszystkim masz session_start()? Bo powinno być na początku każdego pliku, w którym korzystasz z sesji.
la_chica_bonita
  1. <?php
  2.  
  3. ?>


oto poczatke kazdego mojego pliku
mike
Cytat(la_chica_bonita @ 24.09.2008, 13:48:49 ) *
oto poczatke kazdego mojego pliku
Głupota.
Zastanów się. Piszesz właśnie aplikację i wyłączasz wszystkie błedy, które mają Cię ewentualnie powiadomiść o tym, że coś źle napisałeś.
Echhh,...

  1. <?php
  2.  
  3. ini_set('display_errors', 1);
  4.  
  5. //...
  6.  
  7. >
  8. ?>
Tak masz pisać.
la_chica_bonita
co za roznica?

zreszta, nie tym sie teraz martwie.. lecz tym, ze co z tego ze sie wyloguje lub zaloguje skoro po 1 odsiezeniu strony jestem zalogowana badz wylogowana, a po 2 odswiezeniu jestem wylogawana badz zalogowana poprawnie.. bez sensu.. i chociaz szukam bledu nie moge go znalezc..
mike
Cytat(la_chica_bonita @ 24.09.2008, 13:58:24 ) *
co za roznica?
Róznica jest taka, że będziesz pisał na forum głupie tamaty bo nie będziesz świadom tego, że PHP wywala Ci błędy. Jeśli piszesz apliację to tłumienie błędów jest chorym podejściem.
Skąd wiesz, że teraz złe działanie nie jest wynikiem jakiegoś błędu skoro wyłączyłes sobie ich wyświetlanie?
la_chica_bonita
sam jestes chory - nie podoba Ci sie temat to go nie czytaj
nospor
a czy mike napisal ze ty jestes chora? On napisal ze podejscie jest chore, wiec nie obrazaj go.

Zrob to oco cie prosi, to moze sie dowiesz czy masz jakies bledy czy nie.
Jak ci nie zalezy na odpowiedzi to mozemy temat zamknac.
mike
Nie atakuję Cię personalnie. Napisałem że podejście jest niezdrowe bo rodzi wiele problemów. Nie chcesz się edukować i nazywasz mnie chorym, choć ja Ciebie tak nie nazwałem.
Zamykam.

Chyba nie do końca rozumiesz, że proóbuję Ci pomóc. Obrażanie mnie nie prowadzi do niczego.
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.