Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Różnica w działaniu skryptu
gothye
post 2.03.2010, 21:54:05
Post #1





Grupa: Zarejestrowani
Postów: 702
Pomógł: 65
Dołączył: 16.03.2009

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


Witam

napisałem skrytp do zamieszczania ogłoszeń ,i jest w nim obsługa sesji gdzie dane są trzymane w SQL

i tak, na domowym serwerku (debian 5.0 , Apache2,php5) działa ok ,a na hostingu (suse) jest tak że rekord który trzeba ukatualnić o dane jest uaktualniony ale jednoczeście zostaje zdublowany tylko z innym numerem SID sesji ,sama obsługa w klasie wygląda tak :

  1. $this->SID = $this->GetConfig('SID') ? $this->GetCookie('SID') : $this->GetNewSID();
  2. $this->CheckSession($this->SID);
  3.  
  4.  
  5. FUNCTION CheckSession($sid)
  6. {
  7. $ValueSID = $this->SQL->fetch_assoc("SELECT sid,user,value,vdata FROM session WHERE sid=? AND (session_time > UNIX_TIMESTAMP(NOW())-?) LIMIT 1",array($sid,$this->Timeout));
  8. IF($this->SQL->affected_rows == 1)
  9. {
  10. $this->vData = unserialize($ValueSID['vdata']);
  11. IF(($this->vData['USER_ADDR'] == $this->UserIp) && ($this->vData['USER_BROWSER'] == $this->Browser))
  12. {
  13. $this->content = unserialize($ValueSID['value']);
  14. //$this->UserID = $ValueSID['user'];
  15. RETURN true ;
  16. }
  17. }else{
  18. $this->RemoveSession($sid);
  19. $this->CreateSession();
  20. }
  21. }
  22.  
  23. FUNCTION CreateSession()
  24. {
  25.  
  26. echo 'nowa' ;
  27. $this->SQL->query("INSERT INTO session (sid, session_time) VALUES (?,UNIX_TIMESTAMP(NOW())) ",array($this->SID));
  28. $this->SetCookies('SID',$this->SID);
  29. }
  30.  
  31. {
  32. $this->SQL->query("DELETE FROM session WHERE sid=? LIMIT 1",array($sid));
  33. $this->DelCookie('SID');
  34. $this->SID = $this->GetNewSID();
  35.  
  36. }
  37.  
  38.  



dla debugowania dodałem w create session echo 'nowa' i co jest najbardziej zaskakujące ,na chostingu oraz na serwerze w domku pokazuje się tylko raz (czyli tylko raz jest tworzony rekord w SQL ) to skąd mi sie dubluje w bazie ?

sprawdzałem na kilku przeglądarlach i to się dzieje tylko na operze (kilka wersji) ,nie mam już pomysłu sad.gif

Ten post edytował gothye 2.03.2010, 22:17:05


--------------------
Nie udzielam pomocy poprzez PW
Go to the top of the page
+Quote Post
kazikos
post 3.03.2010, 00:22:46
Post #2





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 1.03.2010

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


Miałem kiedyś bardzo podobny problem, okazało się, że w złym miejscu wstawiałem ob_end_flush i cała strona generowała się 2 razy (przez co widziałem tylko 1 var_dumpa). Jeżeli używasz ob_start("ob_gzhandler"); to problem może być w tym miejscu.

Ten post edytował kazikos 3.03.2010, 00:23:17
Go to the top of the page
+Quote Post
parzygnat
post 3.03.2010, 08:27:50
Post #3





Grupa: Zarejestrowani
Postów: 155
Pomógł: 6
Dołączył: 31.12.2007
Skąd: Poznań

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


Zamiast echo zrób do testowania file_put_content() (czyli zapisywania do pliku) i będziesz miał pewność jak zachowuje się skrypt.
Go to the top of the page
+Quote Post
gothye
post 3.03.2010, 09:14:34
Post #4





Grupa: Zarejestrowani
Postów: 702
Pomógł: 65
Dołączył: 16.03.2009

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


rzeczywiście uzuwam ob_start wygląda to w ten sposób że w pliku index mam

ob_start

wykonywany kod

inkludowane pliku 

ob_end 



--------------------
Nie udzielam pomocy poprzez PW
Go to the top of the page
+Quote Post
parzygnat
post 3.03.2010, 09:25:41
Post #5





Grupa: Zarejestrowani
Postów: 155
Pomógł: 6
Dołączył: 31.12.2007
Skąd: Poznań

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


Co dokładnie oznacza u Ciebie ten zapis?

sid=?
Go to the top of the page
+Quote Post
gothye
post 3.03.2010, 09:55:38
Post #6





Grupa: Zarejestrowani
Postów: 702
Pomógł: 65
Dołączył: 16.03.2009

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


napisałem klase do SQL gdzie zapytania za nim zostaną wysłane przechodzą bindowanie ,coś jak w PDO ,co znacznie upraszcza pisanie


--------------------
Nie udzielam pomocy poprzez PW
Go to the top of the page
+Quote Post
kazikos
post 3.03.2010, 10:28:09
Post #7





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 1.03.2010

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


Wrzuć ob_start() i ob_end() w komentarze w takim razie i zobacz czy problem z sesja nadal będzie się pojawiał.
Go to the top of the page
+Quote Post
gothye
post 3.03.2010, 10:54:43
Post #8





Grupa: Zarejestrowani
Postów: 702
Pomógł: 65
Dołączył: 16.03.2009

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


niestety to samo po zachaszowaniu sad.gif

może to wina Suhosina na serwerze ?



--------------------
Nie udzielam pomocy poprzez PW
Go to the top of the page
+Quote Post
parzygnat
post 3.03.2010, 11:45:52
Post #9





Grupa: Zarejestrowani
Postów: 155
Pomógł: 6
Dołączył: 31.12.2007
Skąd: Poznań

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


Cytat
SELECT sid,user,value,vdata FROM session WHERE sid=? AND (session_time > UNIX_TIMESTAMP(NOW())-?) LIMIT 1


Ja bym błędu szukał w tym sid=? dałbym sid="?". Miałem takie przypadku że na różnych serwerach różnie jest to interpretowane.
Zapytanie może Ci zwrócić 0 i wtedy masz znowu tworzenie nowej sesji (wg Twojego algorytmu).
Może tez sprawdź co siedzi w affected_rows?

Ten post edytował parzygnat 3.03.2010, 11:48:45
Go to the top of the page
+Quote Post
gothye
post 3.03.2010, 11:55:02
Post #10





Grupa: Zarejestrowani
Postów: 702
Pomógł: 65
Dołączył: 16.03.2009

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


parzygnat dodawanie "" załatwia za mnie bindowanie w klasie winksmiley.jpg


--------------------
Nie udzielam pomocy poprzez PW
Go to the top of the page
+Quote Post
parzygnat
post 3.03.2010, 12:32:50
Post #11





Grupa: Zarejestrowani
Postów: 155
Pomógł: 6
Dołączył: 31.12.2007
Skąd: Poznań

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


a jak zrobisz cos takiego sid="'.?.'" ?
Go to the top of the page
+Quote Post
gothye
post 3.03.2010, 13:12:59
Post #12





Grupa: Zarejestrowani
Postów: 702
Pomógł: 65
Dołączył: 16.03.2009

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


parzygnat - proszę nie chcę tłumaczyć czym jest bindowanie i jak działa ,posuzkaj sobie w google






--------------------
Nie udzielam pomocy poprzez PW
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: 6.07.2025 - 23:24