Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] unset a usuwanie $_SESSION
Forum PHP.pl > Forum > Przedszkole
Balon
Tworzę sesje za pomocą tej klasy w ten sposob
  1. <?php
  2. /**
  3.  * @copyright 2006 All rights reserved, do not copy, edit or resale.
  4.  * @author Krzysztof Jagiełło <balonyo@gmail.com>
  5.  * @version 0.1
  6.  */
  7.  
  8. class Auth 
  9. {
  10. var $db;
  11.  
  12. function Auth( $db )
  13. {
  14. $this->db = &$db;
  15. }
  16.  
  17. /**
  18.  * Metoda klasy, która pobiera dane z bazy, 
  19.  * porównuje je i tworzy sesje lub zwraca
  20.  * false
  21.  *
  22.  * @param string $login
  23.  * @param string $password
  24.  */
  25. function login( $login, $password )
  26. {
  27. $uArray = array( 'login' => $login, 'pass' => md5( $password ), 'logged' => true );
  28.  
  29. if( $this->compare( $uArray ) )
  30. {
  31. $this->createSession( $uArray, array( 'pass' ) );
  32. return true;
  33. }
  34. else 
  35. {
  36. return false;
  37. }
  38. }
  39.  
  40. /**
  41.  * Porównujemy dane poadne przez usera
  42.  * z danymi z bazy danych
  43.  *
  44.  * @param array $uArray
  45.  * @param array $sArray
  46.  * @return bool
  47.  */
  48. function compare( $uArray )
  49. {
  50. $num = count( $this->db->GetAll( 'SELECT id FROM ' . USR_TABLE . ' WHERE auth_login = "' . $uArray['login'] . '" AND auth_pass = "' . $uArray['pass'] . '"' ) );
  51. return ( $num == 1 ) ? true : false;
  52. }
  53.  
  54.  
  55. /**
  56.  * Metoda tworząca sesje, podajac jej argument
  57.  * ignore (array) wyznaczamy jej elementy
  58.  * z pierwszego argumentu metody
  59.  * ktore mamy pomijac przy tworzeniu
  60.  * tablicy sesyjnej
  61.  *
  62.  * @param array $array
  63.  * @param array $ignore
  64.  */
  65. function createSession( $array, $ignore )
  66. {
  67. foreach( $array as $key => $val )
  68. {
  69. if( !in_array( $key, $ignore ) )
  70. {
  71. $_SESSION[$key] = $val;
  72. }
  73. }
  74. }
  75.  
  76. /**
  77.  * Metoda niszczaca cala sesje
  78.  */
  79. function destroySession()
  80. {
  81. unset( $_SESSION );
  82. unset( $this );
  83. }
  84.  
  85. /**
  86.  * Metoda zwracajaca wartosc element 
  87.  * z tablicy sesyjnej
  88.  * o podanym kluczu
  89.  *
  90.  * @param string_type $key
  91.  * @return string
  92.  */
  93. function getValue( $key )
  94. {
  95. return $_SESSION[$key];
  96. }
  97.  
  98. /**
  99.  * Zwraca nazwe zalogowanego usera  
  100.  */
  101. function getAuthName()
  102. {
  103. return $this->getValue( 'login' );
  104. }
  105.  
  106. /**
  107.  * Zwraca stan autoryzacji
  108.  * zalogowany  - true
  109.  * niezalogowany  - false
  110.  */
  111. function isAuth()
  112. {
  113. return $this->getValue( 'logged' );
  114. }
  115. }
  116. ?>


wywoluje to w ten sposob

  1. <?php
  2. if( $_GET['login'] == 'true' && isset( $_POST['form_login'] ) )
  3. {
  4. if( !$auth->login( $_POST['form_login'], $_POST['form_pass'] ) )
  5. {
  6. $error = 1;
  7. }
  8. }
  9.  
  10. if( $_GET['unlog'] == 1 )
  11. {
  12. $auth->destroySession();
  13. print_r( $_SESSION );
  14. }
  15.  
  16. if( $_SESSION['logged'] == 1 )
  17. {
  18. $engine->set_title('Zalogowany');
  19. $engine->show_page();
  20. $engine->load_page('zalogowany');
  21. }
  22. else if( $error == 1 )
  23. {
  24. $engine->set_title('Podano złe dane');
  25. $engine->show_page();
  26. $engine->load_page('logowanie');
  27. }
  28. else 
  29. {
  30. $engine->set_title('Logowanie');
  31. $engine->show_page();
  32. $engine->load_page('logowanie');
  33. }
  34. print_r( $_SESSION );
  35. ?>


jesli uruchamiam ten skrypt na serwerze poraz pierwszy to jestem elegancko logowany. Jednak kiedy skorzystam z unset i sie wyloguje i wywolam print_r tablicy sesyjnej to nadal sa tam wartosci
Cytat
Array ( [s_lang] => pl [login] => test [isAuth] => 1 [logged] => 1 )

potem jak proboje sie zalogowac np z loginem example to nadal w tablicy jest login...

o co chodzi ? 2h nad tym siedze i juz nie moge sad.gif prosze o pomoc
Athlan
zamiast
  1. <?php
  2. unset( $_SESSION );
  3. ?>

napisz po prostu:
  1. <?php
  2. ?>
Balon
o ja nie moge... jak ja moglem sie o cos takiego zapytac... sorry ze zanizam poziom tego forum ale kompletnie zapomnialem o tym :/
free
W koncu to dzial przedszkole wiec i poziom moze byc niski.
Ja uzywam w pliku poprzez:
switch...
  1. <?php
  2. case 'Wyloguj':
  3.  
  4. //przekierowanie na daną stronę
  5. redirect('index');
  6. break;
  7. ?>
Balon
nie no spokojnie. ja tam nie chce zadnego switcha ;]

ten cms to zlecenie i pisany jest w wiekszosci obiektowo winksmiley.jpg

a co do destroy to po prostu wylecialo mi z glowy kompletnie
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.