Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Klasy i sesje, Dziwne zachowanie zmiennych sesyjnych
aradan
post 27.01.2007, 11:53:59
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 24.04.2006

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


Witam.

Mam następujący problem:

Po uruchomieniu następującej sekwencji poleceń:

  1. <?php
  2. echo "<p>".$HTTP_SESSION_VARS['user']." przed</P>";
  3.  $nazwa_uz = $HTTP_SESSION_VARS['user'];
  4.  echo "<p>".$HTTP_SESSION_VARS['user']." przed klasa</P>";
  5.  $user = new osoba($nazwa_uz);
  6.  echo "<p>".$HTTP_SESSION_VARS['user']." po klasie</P>";
  7. ?>


Otrzymuję wynik:

admin przed
admin przed klasa
Object po klasie


Czyli wychodzi na to, że nie wiedzieć czemu $HTTP_SESSION_VARS['user'] staje się obiektem. Co ciekawe wywołanie

  1. <?php
  2. $user = new osoba("admin");/*login wpisany na sztywno*/
  3. ?>


daje taki sam rezultat.

Kod źródłowy klasy osoba jest następujący:

  1. <?php
  2.  
  3. class osoba {
  4.  
  5.  var $imie;
  6.  var $nazwisko;
  7.  var $login;
  8.  var $haslo;
  9.  var $email;
  10.  var $tel;
  11.  var $status;
  12.  var $error;
  13.  
  14.  function osoba($klient) {
  15. $bd = lacz_bd();
  16. if (!$bd) {
  17.  $this->error = "E012";
  18. }
  19. else {
  20.  $query = "select * from users where login='$klient'";
  21.  $wynik = mysql_query($query);
  22.  if (!$wynik) {
  23. $this->error = "E012";
  24.  }
  25.  else {
  26. $wiersz = mysql_fetch_array($wynik);
  27.  
  28. $this->imie  = stripslashes($wiersz['imie']);
  29. $this->nazwisko = stripslashes($wiersz['nazwisko']);
  30. $this->login = stripslashes($wiersz['login']);
  31. $this->haslo = stripslashes($wiersz['haslo']);
  32. $this->email = stripslashes($wiersz['email']);
  33. $this->tel = stripslashes($wiersz['tel']);
  34. $this->status  = stripslashes($wiersz['status']);
  35. $this->error = "FFFF";
  36.  }
  37. }
  38.  }
  39.  
  40. }
  41.  
  42. ?>



Chciałbym zaznaczyć, że w programowaniu obiektowym jestem niestety początkujący, i muszę używać php w wersji 4.x.x

Z góry dziękuję za pomoc.

Pozdrawiam.
Łukasz Będziński.
Go to the top of the page
+Quote Post
batman
post 27.01.2007, 12:05:50
Post #2





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




A jak masz ustawione register_globals? Najwyraźniej zmienna $user jest brana za $HTTP_SESSION_VARS['user']. Zmień $user na $user1 i sprawdź czy zadziała.


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
Go to the top of the page
+Quote Post
dr_bonzo
post 27.01.2007, 12:09:21
Post #3





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


Jak wyzej. $user i $HTT_..['user' ] to ta sama zmienna. W php4 bylo to jeszcze pomotane i nie pamietam czy dalo sie to skonfigurowac inaczej, uzywac $_SESSION itp.


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
aradan
post 27.01.2007, 12:17:30
Post #4





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 24.04.2006

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


Faktycznie, wielkie dzięki. Kombinowałem ze zmianą nazw innych zmiennych, a o obiekcie $user zapomniałem sad.gif .

Dzięki raz jeszcze.
Zamykam temat.

Pozdrawiam.
Łukasz Będziński.
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 07:54