polimer
2.05.2003, 18:23:30
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ł?
polimer
5.05.2003, 10:20:39
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;
polimer
5.05.2003, 10:28:00
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?
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.
polimer
5.05.2003, 11:04:59
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?"
polimer
5.05.2003, 11:06:08
acha,
właśnie mi przysżło do głowy
serializacja
może to by pomogło?
jak myślisz?
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);
polimer
6.05.2003, 19:37:54
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
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.