Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: logowanie
Forum PHP.pl > Forum > Przedszkole
adif
Witam...

zdaję sobie sprawę że temat logowania juz wiele wiele razy poruszany był na forum - i z tego też względu ciężko sie doszukać właściwych odpowiedzi.

Przeszukałem sporo postów o logowaniu lecz nie znalazłem odpowiedzi na taki problem:

tworzę sobie chyba jeden z najprostszych systemów logowania do panelu administracyjnego:

użytkownik podaje login i hasło i jeśli dane są poprawne ( sprawdzam je z tymi z bazy danych) to automatycznie tworzone są zmienne sesji:
  1. <?php
  2.  
  3. $login = $_POST['login'];
  4. $haslo = $_POST['haslo'];
  5.  
  6. $_SESSION['login'] = $login;
  7. $_SESSION['haslo'] = $haslo;
  8.  
  9. ?>


Następnie w plikach tam gdzie jest to wymagane spawdzam istnienie zmiennych sesji aby dowiedzieć się czy użytkownik jest zalogowany.

I wszystko do tej pory jest ok. działa dobrze. Ale zastanawia mnie jedna rzecz z nazwami zmiennych sesji i z jej bezpieczeństwem:

wystarczy że napiszę sobie krótki skrypt i przy jego pomocy utworze zmienne sesji kolejno:
$_SESSION['login'] = $login;
$_SESSION['haslo'] = $haslo;

Wówczas bez problemu mogę dostać się na obszar administracyjny wcześniej wspomnianego systemu logowania.

Czy widzicie jakies rozwiazanie na to?? A moze ktoś już wcześniej miał na forum taki problem?

P.S. Jeszcz jedno. kiedyś na forum napotkałem się z tematem, w którym uzytkownicy podawali jakie ich zdaniem sa najlepsze rozwiąziania na logowanie. Niestety nie mogę teraz czegos podobnego wyszukać.

pozdrawiam i prosze o pomoc
Cathan
Witam

Domyslam sie ze chodzi ci o to, ze mozna sobie utworzyc jakiekolwiek zmienne sesyjne odpowiadajace tym zmiennym i wtedy sie zalogowac?

Jesli tak - to np zminne nie musza sie nazywac $_SESSION['login'] i$_SESSION['haslo']

mozesz wywoływac funkcje przypisywania z pliku ktory nie znajduje sie z katalogu ktory jest udostepniany przez Apache np przez

require_once(' i siciezka do katalogu, ktory jest wyzej '); // php dziala po stronie serva wiec ma do nich dostep//


Poza tym nie sadze ze tak latwo jest uruchomic zewnetrzny skrypt ktory ci podepnie sie pod zmienne.
Poza tym mozesz dolozyc kolejna zmienna - jakis parametr ktory jest zasysany z bazy
0-user 1-admin
i sprawdzac ten paramet - jesli jest 1 do masz wejscie do panelu jesli cokolwiek innego to nie

to takie moje jakies pomysły na rozwianie towoich obaw

Pozdrawiam
adif
dzięki Cathan za odpowiedź...

w tym momencie wyszło że nie do końca doczytałem o sesjach samych w sobie i że jestem już nieźle zmęczony biggrin.gif

Pisząc tego posta wydawało mi się przez moment, że zmienne sesji utworzone na lokalnym serwerze będą odpowiadały tym zmiennym utworzonym na zewnątz i mój komputer skojarzy je ze soba i dzięki temu uzyskam dostęp do panelu administarcyjnego.

Wystarczyło poczytac więcej o sesjach. Ale na chłopski rozum biorąc sprawę to czy odbywa się to w ten sposob...jeśli źle pisze to proszę o sprostowanie:

W momencie logowania po stronie serwera tworzone są zmienne sesji przechowywane np. w tabliy sesji $_SESSION, które kojarzone są z identyfikatorem sesji po stronie klienta.

Tzn. jeśli klient jest nie zalogowany to skrypt sprawdza czy istnieją zmienne sesji utworzone specjalnie dla danego identyfikatora ( SID ) i jeśli istnieją wpuszcza go do częsci administracyjnej.

Ok...a jeśli chodzi np. o czas zalogowania. Chcę aby klient po dłuższej nieaktywności na stronie np 10min. został automatycznie wylogowany. Czy stosowac do tego np. baze Mysql, w której bedziemy pamiętać czas ostatniego zalogowania i sprawdzac z
obecnym czasem? a może zapamiętywać to w zmiennych sesji?

Myślałem nad czymś takim (pomysł taki na szybko):
za każdym razem jak klient przechodzi na poszczególne podstrony wywoływac fragment kodu:
  1. <?php
  2.  
  3.  //jeśli nie istnieje zmienna sesji 'czas' tworzymy ją z aktualnym czasem
  4. if(!isset($_SESSION['czas'])
  5. $_SESSION['czas']=time();
  6.  
  7. //następnie porównujemy zmienną sesji z obecnym czasem
  8.  
  9. $czas_obecny=time();
  10. $roznica=($czas_obecny)-($_SESSION['czas']);
  11.  
  12. // i tu następuje wylogowanie jeśli róznica wynosi więcej niż np. 10 min
  13.  
  14. ?>


W jaki sposób sprawdzić tą różnicę? A moze ktoś ma zupełnie inny pomyśł na to.

z góry dzięki
Cathan
Na poczatek proponowal bym php.ini i poczytac o konfiguracji sesji

np. session.cache_expire itd.

Mozesz tam ustawic w minutach dlugosc przechowywania sesji, ciastek i wiele inne innych rzeczy

Pozdrawiam
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.