Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Session - Pomoc
Forum PHP.pl > Forum > Przedszkole
Remx
Witam

ino niezbyt rozumny chyba jestem bo zbytnio nie kapuje zasade dzialania $_SESSION sad.gif

I chciałbym aby ktos mi troche podpowiedzial jak to działa i pomogł zmodyfikowac troche moj skrypcik.


a wiec mamy index.php

  1. <?php
  2.  
  3. if($_POST['user'] == "" || $_POST['pass'] == "")
  4. {
  5. ?>
  6. <form name="logowanie" action="index.php" method="POST">
  7. Login: <input type="text" name="user" /><br />
  8. Hasło: <input type="password" name="pass" /><br />
  9. <input type="submit" name="submit" value="Zaloguj" />
  10. </form>
  11. <?php
  12. }
  13. else
  14. {
  15.  $file = file("smg/users.dat");
  16.  foreach($file as $userdata)
  17.  {
  18. list($login, $haslo, $lvluser) = explode("||", $userdata);
  19. if($login == $_POST['user'] && $haslo == $_POST['pass'])
  20. {
  21.  $_SESSION['username'] = $_POST['user'];
  22.  $_SESSION['user_logged'] = time();
  23.  $_SESSION['lvluser'] = $lvluser;
  24.  
  25.  
  26.  header("Location: smg/logx.php");
  27. }
  28. else
  29. {
  30.  header("Location: index.php");
  31. }
  32.  }
  33.  
  34. }


index.php dziala idealnie chyba smile.gif
i tu moje pytanko co do tego pliku

widzimy tu ze zmiene $.... sa przypisywane do zmienych $_SESSION

Cytat
$_SESSION['username'] = $_POST['user'];
        $_SESSION['user_logged'] = time();
        $_SESSION['lvluser'] = $lvluser;

i moje pytanie gdzie sa przechowywane te zmienne ?

teraz mamy plik do ktorego przenosi nas index.php po zalogowaniu sie


  1. <?php
  2.  
  3. if($_SERVER['PHP_SELF'] != $_SESSION['lvluser'] || !isset($_SESSION['user_logged']))
  4. {
  5.  unset($_SESSION['user_logged']);
  6.  unset($_SESSION['username']);
  7.  unset($_SESSION['lvluser']);
  8. }
  9. ?>


rozumiem ze ten wstep jest odpowiedzialny za to ze gdy lvl user beda puste to sesja zostanie zniszczona i w rezultacie nie bedzie dostepu do strony questionmark.gif

i tu moje pytanie jak zrobic a moze juz tak jest ale zapytam moze to pomoze innym aby dana sesja mniala takie warianty ze gdy wylaczym przegladarke sesja jest zakonczona i juz bezposredni link nie odpali strony dopiero po zalogowaniu sie mozna zobaczyc strone,
kolejny wariant to czasowy, czyli dana sesja trwa 30 minut a po tym czasie jest zakonczona i osoba musi sie zalogowac ponownie...

teraz pytanko dotyczace zabezpieczen jak widac to tylko ta stra jest zabezpieczona ale na owej stronie sa linki do podstronek ktore uruchamiaja sie w niej lub jak ktos wpisze bezposredni adres to wyswietli mu sie odrazu owa strona.
Jak zabezpieczyc owe podstrony questionmark.gif

Oraz kolejne moze proste pytanie jak wyswietlic owe dane $_SESSION questionmark.gif
poniewaz mam cos takiego na stronie logx.php

  1. <?php
  2. echo"Jestes zalogowany jako:&nbsp;". $_SESSION['user_logged'];
  3. ?>


ale nie widze nazwy osoby zalogowanej sad.gif


Za pomoc bede wedzieczny dziekuje i Pozdrawiam
bigZbig
Polecam do poczytania:

Manual
Sesje w php
Sesje z pomocą ADOdb
ADODB Session Management Manual
Remx
Z manuala to juz wczesniej kozystalem i dla tego sie pogubilem tam

ale ta stronka webcity fajana jest smile.gif
i w miare zrozumiale napisana smile.gif

Dziekuje jak cos to sie zglosze jeszcze hehe smile.gif
Guest
mam jeszcze pytanko dotyczacej tej sprawy


czy
Cytat
$_SESSION['user_name'];


jest rownownowazne z
Cytat
session_register('user_name');


bo z tego co zrozumialem to session_register powoduje ze zmienna user_name bedzie globalną $user_name na kolejnych stronach ? czy dobze to zrozumialem ?

w takim razie czy $_SESSION to jest cos podobnego ? bo jak widac w przykladzie tym z samego poczatku nie uzywamy session_register a tylko $_SESSION.

Dziekuje
artur81
$_SESSION to tablica superglobalna, i z niej powinineś korzystać, chociażby dlatego że osbłsuga zmiennych globalnych jest wyłączona na wielu serwerach.
w00t
Co zrobic zeby sie nie mieszaly sesje z identycznych IP, albo wogule zeby sie nie mieszaly?
acztery
kazda sesja jest inna. mało prawdopodobne ze sesja sie powtórzy. ale jezeli ID sesji trzymasz w bazie mozesz np wygenerować sobie jakiś tam ciąg znaków np md5(login) i dodać go w sesji i to zapisać to bazy wtedy NIGDY sesja sie nie powtorzy mo md5 bedzie dla kazdego inny bo nie moga byc dwa takie same loginy ...
Remx
mam jeszcze 2 pytanka bo nie znalazlem odpowiedzi na to

  1. <?php
  2.  
  3. if($_SERVER['PHP_SELF'] != $_SESSION['lvluser'] )
  4. ?>


o co chodzi w tym kodzie powyzej wiem ze tu chodzi ze jezeli lvluser bedzie rozny od php ale co to jest te $_SERVER['PHP_SELF']


oraz kolejne pytanie ktore dotyczy session + cookie
czy mozna zrobic cos takiego w tym oknie co jest Formulaz logowania


  1. <?php
  2.  
  3. // index.php
  4.  
  5. setcookie ("session_smg", session_id(), time() + 1800);
  6. $_SESSION['id']=session_id();
  7. $_SESSION['user_name']="Remx";
  8. $_SESSION['pass']=md5("HASŁO");
  9. $_SESSION['lvl_user']="1";
  10.  
  11.  
  12. ?>


a nastepnie w kolejnych stronach na poczatku dac cos takiego
oczywiscie to kod w skrocie ;]
  1. <?php
  2.  
  3. // next strona
  4.  
  5. if(isset($_COOKIE['session_smg']) && iseet($_SESSION['id'])) {
  6. header ...... // przenosi nas do index.php
  7. // sprawdza czy jest cos w cookie i czy jest id sessi
  8. }
  9. elseif($_COOKIE['session_smg']==$_SESSION['id']) // sprawdza czy id z cookie jest teakie same jak id sesji przekazanej na poczatku
  10. {
  11. elseif (....... // sprawdza login $_session[user_name] z loginem z bazy //...)  <-- // niewiem czy te sprawdzanie jeszcze potrzebne czy wystarczy tylko id session
  12.  
  13. ........ kod ........
  14. ........ kod ........
  15.  
  16. *** menu ***
  17. news
  18. forum
  19. bla bla
  20. bla bla 2
  21. if ($_SESSION[lvl_user]=='1'){
  22. panel admina 
  23. }
  24. elseif ($_SESSION[lvl_user]=='2'){
  25. panel moderatora 
  26. }
  27. else{
  28. ************
  29. }
  30.  
  31.  
  32. ?>

i tu jak widzimy cookie trwa 1800 sek = 30minut po tym czasie ID beda rozne
znaczy sie nie bedzie cookie i strona zostanie przekierowana do index.php
to tak w skrocie smile.gif

a moze wy macie jakies sugestjie ? dotyczace uzycia session + cookie

*************
jeszcze chcialem sie zapytac o ciasteczka
chodzi mi czy mozna zrobic cos takiego

setcookie ("session_smg", $_SESSION['id'], time() + 1800);
setcookie ("session_smg", $_SESSION['user'], time() + 1800);

czy w tym ciasteczku jednym beda dwie te zmienne ?
czy koniecznie trzeba uzyc nazwy ciasteczka jako naprzyklad tablicy ?
***********

dziekuje i pozdrawiam
bigZbig
Cytat(Remx @ 2006-03-18 01:01:07)
...co to jest te $_SERVER['PHP_SELF']

Poczytaj w manualu

Poza tym zawsze mozesz wyswietlic
  1. <?php
  2. echo $_SERVER['PHP_SELF'];
  3. ?>
Remx
yhm a wiec tak połaczylem session z cookie
zrobilem tak
index.php ma w sobie
star session
oraz 2x setcooki do jednego wrzucam ID session a do drugiego login
nastepnie skrypt sprawdza czy osoba jest w bazie i jak login i haslo pasuje przerzuca nas do strony logx.php
a tam na samym poczatku mam
star session oraz podspodem ten kod co jest tu podspodem

  1. <?php
  2.  
  3. if(($_SESSION['id'])!=($_COOKIE['session_smg_id']) || ($_SESSION['login'])!=($_COOKIE['session_smg_login']))
  4. {
  5. ..... back do logowania ...
  6. }
  7. else
  8. {
  9. ..... stronka ....
  10. ...... stronka ...
  11. }
  12. ?>


Chcialem zrobic tak ze gdy id sesji jest inne od id z cookie lub login session jest inny niz ten z cookie
przerzuca nas spowrotem do strony logowania
w innym przypadku czyli else wyswietla sie nam strona

i moje pytanie dla czego ten if niechce dla mnie dzialc questionmark.gif
umiescilem w kodzie zamiast przekierowywania wyswietlanie owych seesion id i cookie id i tak samo loginy i wszystko jest takie samo to dla czego wykonuje sie kod spod ifa a nie eles questionmark.gif

****************************
edit:
******
jeszcze chcialem sie zapytac czy do tego dorobic if sprawdzajcy czy wogole cos jest w cookie lub session ?
if(isset($_cookie['session_smg_id']&& ...... &&..... i tak dlaej questionmark.gif



Pozdrawiam
pEbE
rotfl.
Nie $_SSSION tylko $_SESSION

Moze przeanalizujecie kod 2 razy przed dodaniem tego na forum
Remx
a ja jestem ciekaw wogole po co sie udzielasz tu jak nie pomagasz ?

po drugie to co tu pisze to z palca a nie ctr+v
wiec w czym problem ? z tego co widze to wszyscy wiedza co to znaczy jezeli dla ciebie jedna litera gdy sie zmieni i ty niewiesz ze SESSION moze byc SSSION to niewiem poco wogole tu wlazisz i robisz off topa tongue.gif
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.