Po pierwsze - sorki, jezeli zly dzial biggrin.gif

Mam dziwaczny i niezwykle denerwujący problem. Buduje wlasnie cms'a opartego o mojego wlasnego frameworka (tez under construction), gdzie ladowanie odpowiednich modulow i akcji odbywa sie przez pasek adresu, np: index.php?module=comments&action=delete&id=19 (module - klasa modułu, action - metoda klasy, id - pozostale dane, tutaj id komentarza do usuniecia). Problem opisze na przykladzie wlasnie usuwania komentarzy.

fragment kodu odpowiedzialny za usuwanie:
  1. <?php
  2. $news_id = $comment_dao -> get_news_id($id);
  3. if($confirm) // $_GET['confirm']
  4.        {
  5.            debug::display('x', 'plik.txt');
  6.            $comment_dao -> delete_comment($id, $news_id); // usuniecie komentarza
  7.            $notice = new notice('comment_deleted_successfully'); // stworzenie powiadomienia
  8.            $notice -> redirection = $_SERVER['PHP_SELF'].'?module=comments&amp;news='.$news_id;
  9.            throw $notice;
  10.        } else {
  11.            $question = new question('delete_comment'); // stworzenie zapytania
  12.            $question -> confirm = $_SERVER['PHP_SELF'].'?module=comments&amp;action=delete&amp;confirm=true&amp;id='.$id;
  13.            $question -> resign = $_SERVER['PHP_SELF'].'?module=comments&amp;news='.$news_id;
  14.            throw $question;
  15.        }
  16. ?>


Po uruchomieniu opcji usuwania komentarza wyswietla sie zapytanie ($question). U mnie jest to klasa rozszerzająca klase Exception, ktora wyswietla okienko dialogowe z pytaniem oraz dwoma przyciskami przekierowujacymi: na tak $question -> confirm oraz na nie $question -> resign. Po potwierdzeniu komentarz jest usuwany i pojawia sie kolejne informacja, $notice (zbudowana podobnie jak question).

Problem ktory tutaj wystepuje, imo nie ma wogle prawa bytu blinksmiley.gif Otóż, podczas usuwania komentarza, jezeli pomiedzy kolejnymi wywolaniami strony odczekam kilka sekund - wszystko jest ok. Komentarz sie usunie, wartosc $news_id zostanie pobrana prawidlowo, wszystkie powiadomienia wyswietla sie poprawnie. Kiedy natomiast przechodze do kolejnych podstron nieco szybciej, powiedzmy <1sek (strona w tym czasie zdązy sie zaladowac do konca), firefox wywołuje ta podstrone kilkakrotnie "niejawnie". Wyglada to tak, ze najpierw wyswietla sie normalnie zapytanie "czy usunac?", po kliknieciu tak pojawia sie informacja, ze komentarz zostal usuniety. ALE, $news_id jest pusta, poniewaz skrypt nie moze pobrac jej z bazy, gdyz komentarz zostal juz usuniety przy wczesniejszym "niejawnym" wywolaniu strony. Funkcja debug::display('x', 'plik.txt'); zapisuje do pliku txt litere x przy kazdym wywolaniu usuwania komentarzy. Przy wolnym klikaniu, w pliku pojawia sie 1 litera, czyli tyle ile powinno byc. Natomiast przy szybkim 2, albo nawet 3. O dziwo problem ten wystepuje u mnie tylko w firefoxie, pod opera dziala bez zarzutu (pod IE nie dziala w ogole, ale to inna sprawa biggrin.gif). Sprobuje jeszcze na starszej wersji FF, oraz reinstalke aktualnej, moze cos da. Tymczasem, jezeli ktos ma jakikolwiek pomysl, dlaczego tak sie dzieje, prosze o pomoc smile.gif

Moj config:
-windows xp pro sp3
-Apache/2.2.9
-PHP/5.2.6
-Firefox 3.0.5

EDIT:::

Okazalo sie ze problem lezal gdzie indziej biggrin.gif Temat do zamkniecia i sory za smietnik winksmiley.jpg