Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] sesje+wielu użytkowników
domel23
post
Post #1





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 9.04.2007

Ostrzeżenie: (0%)
-----


Witam.

Mam taki problem, mianowicie jak jest zalogowany tylko jeden użytkownik to wszystko działa ok, ale jak jest zalogowanych paru użytkowników i jeden z nich się wyloguje to sesja jest niszczona dla wszystkich i tracą oni dostęp do danych dostępnych po zalogowaniu. Gdy jeden użytkownik zrobi cokolwiek na stronie po zalogowaniu to wszystkich przelogowuje na tego użytkownika i lipa :-( Jak to poprawić?

logowanie.php
  1. <?php
  2. $log = $_POST['login'];
  3. $pass = $_POST['pass'];
  4. $ktotam=$_POST['kto'];
  5.  
  6. if ($ktotam == 'K')
  7. {
  8.  
  9. include("images/dbklient.dat");
  10. if(!$db){
  11. ?>
  12. <script language="javascript">
  13. <!--
  14. alert("Przepraszamy ale serwer jeste aktualnie zajety, prosze sprobowac za chwile"); 
  15. location.href = 'loguj.php';
  16. //-->
  17. </script>
  18. <?php
  19. }
  20. else{
  21. //-----------------------------------------------------------------------------------------
  22. $query = "SELECT * FROM karty WHERE id_klienta = '$log' AND haslo = '$pass'";
  23. $res = pg_query($db, $query) or die(pg_errormessage());
  24. $wierilo = pg_num_rows($res);
  25. if ($wierilo == 1) {
  26. $_SESSION['log']="$log";
  27. header("Location: klient.php");
  28. exit();
  29. }
  30. else {
  31. pg_close($db);
  32. ?>
  33. <script language="javascript">
  34. <!--
  35. alert("Bledny login lub haslo, ponow probe"); 
  36. location.href = 'loguj.php';
  37. //-->
  38. </script>
  39. <?php
  40. }
  41. }
  42. }
  43. else if($ktotam == 'S')
  44. {
  45. include("images/dbfirma.dat");
  46. if(!$db){
  47. ?>
  48. <script language="javascript">
  49. <!--
  50. alert("Przepraszamy ale serwer jeste aktualnie zajety, prosze sprobowac za chwile"); 
  51. location.href = 'loguj.php';
  52. //-->
  53. </script>
  54. <?php
  55. }
  56. else{
  57. //-----------------------------------------------------------------------------------------
  58. $query = "SELECT * FROM sprzedawcy WHERE id_sprzedawcy = '$log' AND haslo = '$pass'";
  59. $res = pg_query($db, $query) or die(pg_errormessage());
  60. $wierilo = pg_num_rows($res);
  61. if ($wierilo == 1) {
  62. $_SESSION['log']="$log";
  63. header("Location: sprzedawca.php");
  64. exit();
  65. }
  66. else {
  67. pg_close($db);
  68. ?>
  69. <script language="javascript">
  70. <!--
  71. alert("Bledny login lub haslo, ponow probe"); 
  72. location.href = 'loguj.php';
  73. //-->
  74. </script>
  75. <?php
  76. }
  77. }
  78.  
  79. }
  80. else{
  81. ?>
  82. <script language="javascript">
  83. <!--
  84. alert("Wybierz rodzaj logowania"); 
  85. location.href = 'loguj.php';
  86. //-->
  87. </script>
  88. <?php
  89. }
  90. ?>


out.php
  1. <?php 
  2. //session_start(); 
  3. $_SESSION = array (); 
  4. if (isset($_COOKIE[session_name()])) { 
  5.  setcookie(session_name(), '', time()-36000, '/'); 
  6. } 
  7. header("Location: index.php"); 
  8.  ?>


Więc nadal się z tym morduje, przeszukałem już chyba całe forum, różne porady i nic (IMG:http://forum.php.pl/style_emoticons/default/exclamation.gif) Proszę pomóżcie
Go to the top of the page
+Quote Post
styx
post
Post #2





Grupa: Zarejestrowani
Postów: 138
Pomógł: 3
Dołączył: 21.11.2005

Ostrzeżenie: (0%)
-----


a testowałeś to na jednym kompie?
Go to the top of the page
+Quote Post
domel23
post
Post #3





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 9.04.2007

Ostrzeżenie: (0%)
-----


Mam ten skrypt nan dwóch kompach i nie działa.
Go to the top of the page
+Quote Post
gebp
post
Post #4





Grupa: Zarejestrowani
Postów: 180
Pomógł: 6
Dołączył: 10.04.2006

Ostrzeżenie: (0%)
-----


daj na samym początku (przed wszystkimi innym)
  1. <?php
  2. ?>
Go to the top of the page
+Quote Post
misiek172
post
Post #5





Grupa: Zarejestrowani
Postów: 656
Pomógł: 3
Dołączył: 26.10.2005
Skąd: Częstochowa

Ostrzeżenie: (0%)
-----


$_SESSION = array ();

czyżby ta linijka nie jest problemen twoich cudów?

w tym momencie niszczysz cała tablice sesji wszystkich użytkowników!!
Go to the top of the page
+Quote Post
domel23
post
Post #6





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 9.04.2007

Ostrzeżenie: (0%)
-----


Niestety nadal to samo (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)
Go to the top of the page
+Quote Post
misiek172
post
Post #7





Grupa: Zarejestrowani
Postów: 656
Pomógł: 3
Dołączył: 26.10.2005
Skąd: Częstochowa

Ostrzeżenie: (0%)
-----


wogóle plik OUT jest bezensowny,

ponieważ wystarczy samo polecenie session_destroy();

i oczywiśice przelogowanie.
Go to the top of the page
+Quote Post
domel23
post
Post #8





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 9.04.2007

Ostrzeżenie: (0%)
-----


Co masz na myśli pisząc przelogowanie?
Go to the top of the page
+Quote Post
misiek172
post
Post #9





Grupa: Zarejestrowani
Postów: 656
Pomógł: 3
Dołączył: 26.10.2005
Skąd: Częstochowa

Ostrzeżenie: (0%)
-----


chodziło mi o ten Location (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)

chciałem powiedziedź odświeżenie, niewiem czemu użyłem słowa przelogowanie ;P
Go to the top of the page
+Quote Post
domel23
post
Post #10





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 9.04.2007

Ostrzeżenie: (0%)
-----


A teraz zagadaka (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)

Mianowicie jak zaloguje dwuch lub więcej użytkowników na używając jednej przeglądarki na. Opera na osobnych kartach to lipa.

Natomiast jak zaloguje każdego użytkownika pod inną przeglądarka to wszystko jest OK. Każdy działa na swoich podstronach i nie ma efektu "przelogowania" na innych użytkowników i wylogowanie tez jest OK.

Czy to jest normalne zjawisko? (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
Go to the top of the page
+Quote Post
misiek172
post
Post #11





Grupa: Zarejestrowani
Postów: 656
Pomógł: 3
Dołączył: 26.10.2005
Skąd: Częstochowa

Ostrzeżenie: (0%)
-----


oczywiście, w twoim przypadku ID sesji przekazywany jest w COOKIE

,a każda przeglądarka tworzy plik cookie do danej strony (chyba ze zdefiniujesz tworzenie innego, lecz w tym przypadku jest jeden).

no i co za tym idzie używając tej samej przeglądarki na TYM SAMYM komputerze bedzie się nadpisywał numer sesji. Ale na róznych komputerach bedzie dobrze (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ten post edytował misiek172 19.04.2007, 16:23:43
Go to the top of the page
+Quote Post
domel23
post
Post #12





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 9.04.2007

Ostrzeżenie: (0%)
-----


Czyli wszystko jest OK (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) Kamień spadł mi z serca dzieki misiek172.

A mam jeszcze takie jedno pytanie. Mianowicie czy jak w pliku out.php mam ustawiony czas ważności sesji to czy automatyczne niszczenie sesji zadziała jeśli nie przejdę na tą strone out.php?

Zamieszczam lekko poprawiony plik out.php jeśli ktoś chciałby skorzystać

  1. <?php 
  2. //$_SESSION = array (); 
  3. if (isset($_COOKIE[session_name()])) { 
  4.  setcookie(session_name(), '', time()-9000, '/'); 
  5. } 
  6. header("Location: index.php"); 
  7.  ?>
Go to the top of the page
+Quote Post
misiek172
post
Post #13





Grupa: Zarejestrowani
Postów: 656
Pomógł: 3
Dołączył: 26.10.2005
Skąd: Częstochowa

Ostrzeżenie: (0%)
-----


czas sesji sie definiuje przy jej tworzeniu a nie niszczeniu, ponieważ byłoby ironicznym zniszczyć kogoś i dać mu czas ważności (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)

to tak jak kara śmierci z grzywną (IMG:http://forum.php.pl/style_emoticons/default/haha.gif)
Go to the top of the page
+Quote Post
domel23
post
Post #14





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 9.04.2007

Ostrzeżenie: (0%)
-----


dobre porównanie (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)

czyli przy tworzeniu sesji, a czy tylko przy pierwszym wywołaniu session_start(); czy za każdym razem na każdej podstronie?

jeszcze raz plik out.php już bardziej okrojony

  1. <?php 
  2. header("Location: index.php"); 
  3.  ?>
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 25.12.2025 - 07:39