Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Sesja - dziwne zachowanie
qrzysztof
post
Post #1





Grupa: Zarejestrowani
Postów: 220
Pomógł: 19
Dołączył: 25.04.2009

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


Witam,

Mam stronę o następującym szkielecie:

[PHP] pobierz, plaintext
  1. <?php
  2. session_start();
  3. if($_POST['costam'])
  4. {
  5. $obiekt= new Obiekt;
  6. #inne nieistotne instrukcje
  7. $_SESSION['obiekt']=$obiekt;
  8. }
  9. if($_POST['inne_costam'])
  10. {
  11. $obiekt=$_SESSION['obiekt']
  12. $obiekt->zrobCos();
  13. #inne nieistotne instrukcje
  14. }
  15. ?>
[PHP] pobierz, plaintext

Lokalnie wszystko działa dobrze. Jedyny problem jest taki, że wywala w 14. linii jakoby funkcja zrobCos() była wykonywana na non-object, w następujących okolicznościach (wszystkie muszą zajść równocześnie):

1) na serwerze,
2) w przeglądarce firefox,
3) tuż po włączeniu tej przeglądarki (tzn nie było wcześniej ani jednego jej okna, przechodzimy od razu na moją stronę),
4) klikamy szybko (nie jakoś błyskawicznie, ale po prostu szybko żeby wywołać część tworzącą obiekt i część z niego korzystającą.

Rozumiem, że obiekt w pierwszej części kodu nie zdążył jeszcze powstać, kiedy wywoływana już jest w drugiej części funkcja na obiekcie. Tyle, że jest to dla mnie dziwne - takie opóźnienia. Ciekawe, że inne przeglądarki tego problemu nie mają. Da się to jakoś wyprostować? Czy może mam łapać wyjątek z komunikatem "Spróbuj jeszcze raz", "Klikaj wolniej" albo "Nie tak szybko mistrzu"?

Ten post edytował qrzysztof 7.01.2010, 11:41:27
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
qrzysztof
post
Post #2





Grupa: Zarejestrowani
Postów: 220
Pomógł: 19
Dołączył: 25.04.2009

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


Jest to na pewno jakieś rozwiązanie, ale uświadomiło mi jedynie, że za mało szczegółów podałem w przykładzie. Tak więc jeszcze raz:

  1. <?php
  2.  
  3.  
  4. if(isset($_POST['wazna_dana']))
  5. {
  6. $obiekt= new Obiekt;
  7. $obiekt->zaktualizuj($_POST['wazna_dana']);
  8. #inne nieistotne instrukcje
  9. $_SESSION['obiekt']=$obiekt;
  10. }
  11.  
  12. if($_POST['inne_costam'])
  13. {
  14. $obiekt=$_SESSION['obiekt']
  15. $obiekt->zrobCos();
  16. #inne nieistotne instrukcje
  17. }
  18.  
  19. ?>


Obiekt niestety nie bez przyczyny jest tworzony w pierwszej części kodu. Są na nim tam wykonywane operacje. Bez nich funkcja zrobCos() nie da oczekiwanych rezultatów.

Dodam jeszcze, że POST['wazna_dana'] i POST['inne_costam'] pochodzą z różnych formularzy, umieszczonych na różnych stronach. Także obydwie te zmienne nie mogą zostać przesłane do skryptu równocześnie. Najpierw jest przesyłana jedna, a potem druga.

Ten post edytował qrzysztof 7.01.2010, 11:59:27
Go to the top of the page
+Quote Post

Posty w temacie


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: 7.10.2025 - 17:00