la_chica_bonita
24.09.2008, 11:51:42
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
24.09.2008, 12:07:29
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
24.09.2008, 12:15:48
hmm, ze niby mam w php.ini zmienic ta zywotnosc? a nie w kodzie gdzies?
a jesli chodzi o kod.. to mam takie funkcje :
<?php
function tryLogin($user, $pwd) {
// Proba zalogowania jako uzytkownik $user , ktory podal haslo $pwd
// $pwd = ($pwd); // szyfrowanie hasla
if (getRow("SELECT * FROM uzytkownicy WHERE login = '$user' AND haslo = '$pwd'"))
return true;
else
return false;
}
function login($user) {
// Logowanie na podane wczesniej dane powiodlo sie - zaloguj do systemu
if (isset($_SESSION['user'])) // istenieje stara sesja - usun unset($_SESSION['user']); else {
// rozpoczecie nowej sesji, ktorej wartosciami sa dane uzytkownika
$_SESSION['user']['name'] = $user;
$rs = getRow("SELECT * FROM uzytkownicy WHERE login = '$user'");
$_SESSION['user']['kpx'] = $rs['kpx']; // identyfikator uzytkownika
//echo $_SESSION['user']['kpx'];
}
}
function logoff() {
//Wylogowanie, czyli zniszczenie sesji uzytkownika
if (isset($_SESSION['user'])) // istenieje stara sesja - usun unset($_SESSION['user']); // tutaj trzeba ustawic ciasteczko, ktore bedzie za nas wylogowywalo po godzinie?
?>
no i dupka
hiszpanespaniol
24.09.2008, 12:29:26
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
24.09.2008, 12:45:06
<?php
if (isset($_POST['send'])) { if (empty($_POST['username']) || empty($_POST['pwd'])) // nie podano ktoregos z pol $info = info('err', 'Zalogowanie niemożliwe - podaj login bądź hasło');
else {
if (tryLogin($_POST['username'], $_POST['pwd'])) // proba logowania
// sukces
login($_POST['username']);
else // porazka
$info = info('err', 'Zalogowanie niemożliwe - błędny login bądź hasło');
}
?>
oto moje wywolanie funkcji logujacej - czyli po kliknieciu w przycisk loguje mnie..
a no pozniej po tym mam jeszcze
<?php
if (isset($_SESSION['user'])) { // dzialania
else - niezlaogowany
?>
wlansie zauwazylam, ze mam podobny problem z wylogowywaniem z systemu.. shit..
w kodzie mam
<?php
logoff();
?>
hmm jak temu zaradzic?
mike
24.09.2008, 12:47:22
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
24.09.2008, 12:48:49
<?php
?>
oto poczatke kazdego mojego pliku
mike
24.09.2008, 12:53:57
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,...
<?php
//...
>
?>
Tak masz pisać.
la_chica_bonita
24.09.2008, 12:58:24
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
24.09.2008, 13:04:31
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
24.09.2008, 13:07:05
sam jestes chory - nie podoba Ci sie temat to go nie czytaj
nospor
24.09.2008, 13:08:37
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
24.09.2008, 13:09:02
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.