Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> dane sesji w bazie danych
polimer
post 2.05.2003, 18:23:30
Post #1





Grupa: Nieautoryzowani
Postów: 17
Pomógł: 0
Dołączył: 30.04.2003

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


hej, to znów ja.
nadal męczę sesje przechowywane w bazie danych
Wszystko działa ok. o ile zmienne przypisuje na sztywno
np:
$_SESSION['user']='marcin'; //wynik zostaje zapisany w bazie danych

o ile jednak jako dane sesji próbuję przechować informacje uzyskana z innych tablic czy bazy danych wszystko bierze w łeb
przykładowo:

$user=$HTTP_POST_VARS['user'];
echo $user; //zostaje dobrze wyświetlone;
$_SESSION['user'] = $user;
echo $_SESSION['user']; //też zostje wyswietlone tyle że baza danych tego nie przyjmuje

podobnie rzecz ma się z wynikiami z baz danych
Ktoś ma pomysł?
Go to the top of the page
+Quote Post
polimer
post 5.05.2003, 10:20:39
Post #2





Grupa: Nieautoryzowani
Postów: 17
Pomógł: 0
Dołączył: 30.04.2003

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


zgłębiłem dokładniej problem.
dalej nie działa ale wiem już coś więcej.

Mam taki kawałek skryptu

...
$_SESSION['user']=$_POST['user'];
$_SESSION['password']=mysql_result($Resultat1, 0, "password");
@$poloczenie=mysql_connect($host,$_SESSION['user'],$_SESSION['password']);
if($poloczenie):
@$Resultat=mysql_db_query("logowanie","insert into logowanie.uprawniony alues('".$_SESSION['user']."','$data','".$_POST['ip']."')",$conn3);
else:
@$Resultat=mysql_db_query("logowanie","insert into logowanie.nieuprawniony values('".$_SESSION['user']."','$data','".$HTTP_POST_VARS['ip']."')",$conn3);
refresh();
include('szkielet_html/start_html.php');
komunikat("$kolor01","$styl1",'Błędny login lub hasło. Proszę spróbować powtórnie');
exit;
endif;
Go to the top of the page
+Quote Post
polimer
post 5.05.2003, 10:28:00
Post #3





Grupa: Nieautoryzowani
Postów: 17
Pomógł: 0
Dołączył: 30.04.2003

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


przepraszam.

omyłkowo wysłałem poprzedni.
a więc mam taki kawałek skryptu:

...
$_SESSION['user']=$_POST['user'];
$_SESSION['password']=mysql_result($Resultat1, 0, "password");
@$poloczenie=mysql_connect($host,$_SESSION['user'],$_SESSION['password']);
if($poloczenie):
@$Resultat=mysql_db_query("logowanie","insert into logowanie.uprawniony values('".$_SESSION['user']."','$data','".$_POST['ip']."')",$conn3);
exit;
endif;
...

Wszystko jest ok. (tzn sesja wraz z przypisanymi wartościami 'user' i 'password' zostaje zapisana w bazie pod warunkiem że nie jest towrzono połączenie z mysqlem ($poloczenie).
Jeżeli takowe połączenie zostanie utworzone, do bazy danych gromadzących informacje o sesjach nie wędruje żaden wpis. Dzieję się tak niezależnie od tego czy $połącznie tworzone jest z tymi zmiennymi usera i hasłą czy innymi (nawet wpisanymi na sztywno).
Zjadłem już na tym zęby i potrzebuję POMOCY

acha, ten sam skrypty przy zapisie sesji do plików dziala OK (tzn $poloczenie w niczym nie przeszkadza).
próbowałem zmieniać kolejność poszczególnych części skryptu; bez efektu;
Ktoś może wałokował już ten problem lub wie w czym rzecz?
Go to the top of the page
+Quote Post
DeyV
post 5.05.2003, 10:54:18
Post #4





Grupa: Zarząd
Postów: 2 277
Pomógł: 6
Dołączył: 27.12.2002
Skąd: Wołów/Wrocław




Wydaje mi się, że problem może tkwić w błędnym przechowywaniu uchwytów połaczenia z bazą danych w funkcjach (w całej klasie) zwiazanych z działaniem sessji.


--------------------
"Niezależnie od tego, jakie masz osiągnięcia, ktoś Ci pomaga..."
Go to the top of the page
+Quote Post
polimer
post 5.05.2003, 11:04:59
Post #5





Grupa: Nieautoryzowani
Postów: 17
Pomógł: 0
Dołączył: 30.04.2003

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


tzn, gdybym przerobił funkcje do zarządzania sesją w bazie mogło by zadziałać?
obecnia tak jak przypuszczasz funkcja ta zbudowana jest na klasie

mógłbym usunąć klasę (zostawić same funkcje)
zadziałało by?"
Go to the top of the page
+Quote Post
polimer
post 5.05.2003, 11:06:08
Post #6





Grupa: Nieautoryzowani
Postów: 17
Pomógł: 0
Dołączył: 30.04.2003

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


acha,
właśnie mi przysżło do głowy

serializacja
może to by pomogło?
jak myślisz?
Go to the top of the page
+Quote Post
DeyV
post 5.05.2003, 11:25:28
Post #7





Grupa: Zarząd
Postów: 2 277
Pomógł: 6
Dołączył: 27.12.2002
Skąd: Wołów/Wrocław




1. Zastosowanie klasy to najlepsze rozwiazanie
2. Serializacja? Po co?
3. Miałem na myśli to, by zdefiniwać zmienną var $polaczenie;
która przyjmie wartość
$this->polaczenie = mysql_connect() ;
a następnie cały czas operujemy tym identyfikatorem, np.
mysql_select_db ( string nazwa_bazy, $this->polaczenie );
mysql_query( string zapytanie, $this->polaczenie);


--------------------
"Niezależnie od tego, jakie masz osiągnięcia, ktoś Ci pomaga..."
Go to the top of the page
+Quote Post
polimer
post 6.05.2003, 19:37:54
Post #8





Grupa: Nieautoryzowani
Postów: 17
Pomógł: 0
Dołączył: 30.04.2003

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


hej.
Nie pomogło. Przynajmniej nie od razu.
Pokazywało się mnóstwo dziwnych komunikatów (próbowałem to rozgrywać jeszcze z innej strony).
Ostatecznie znalazlem.
W funkcjach do obsługi sesji należało zmienić wszystkie wywołanie mysql_query na mysql_db_query (oczywiście ze wskazaniem odpowiedniej bazy).
MySQL po prostu się gupił. Gdy nie było zdefiniowanej bazy (co miało miejsce przy mysql_query) jako baze zakładał bazę ostatnio użytą przez skrypty (czyli inną niż baza wskazana jako baza do przechowywania sesji).

Teraz wszystko działa OK. Nawet z wyłączoną opcją register_globals.

Może komuś się to przyda (mam nadzieję że nie zmarnuje tyle czasu co ja).
Pozdrowienia
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: 18.07.2025 - 05:38