Witam.
Mam problem z własną stroną. Polega on na tym że gdy będą nowe możliwe wyniki z zapytania mysql do wyświetlenia lub gdy zostanie ustawiona sesja odpowiedzialna za zalogowanie to aby zobaczyć zmiany (np. zamiast napisu "Zaloguj" było "Ustawienia konta") to muszę odświeżyć ręcznie każdą podstronę. Nie wiem czy to jest z powodu złego kodu php czy serwera (WebServ).
Z góry dziękuję za pomoc.
co rozumiesz przez odświeżyć? masz ta samą strone otwartą na kilku kartach
Rozumiem to przez kliknięcie przycisku "odśwież" w przeglądarce.
Stronę mam otwartą w jednej karcie.
rozumiem...
jeżeli pojawiają się nowe dane z bazy do wyświetlenia, to musisz po prostu odpytać o te dane serwer, czy to po prostu odświeżając strone przez F5 czy używając Ajaxa.
natomiast jeżeli przechodzisz przez jakiś formularz logowania, zalogowałeś się i widzisz na stronie "zaloguj sie" a dopiero po odświeżeniu strony strona widzi że jesteś zalogowany,
to tak naprawdę ciezko powiedzieć, przypuszczam że coś ze skryptem jest nie tak.
Winą może być używanie include?
Każda podstrona jest tworzona za pomocą funkcji która jest includowana.
include sam w sobie raczej nie. stawiałbym raczej na logikę aplikacji. po prostu skrypt zbyt późno lub po prostu źle posługuje się sesją (bo zapewne tam są trzymane dane o ew. zalogowanym użytkoniku)
Dodam że ręczne odświeżenie jest wymagane nawet gdy zmienię sam tekst w pliku. (przed chwilą sprawdziłem)
Hej,
Czy używasz przekierowań po tym jak użytkownik poprawnie przejdzie autoryzację? Ponieważ wygląda to na pierwszy rzut oka właśnie tak, jakbyś tego nie robił.
Jak pisał @piotr.mroczek, wyniki musisz przeładować aby były widoczne, więc powinieneś wysłać odpowiedni nagłowek do przeglądarki, który sam odświeży stronę, a nie użytkownik.
Chodzi o header?
Próbowałem tego używać ale wysypuje mi błędami w stylu "headers already sent". Wiem że przed tym nie może znajdować się nic innego ale nie wiem jak kto wykombinować.
Błędu już nie mam. Tylko co zrobić aby odświeżyło stronę tylko 1 raz? Trzeba napisać skrypt, sprawdzający czy strona była odświeżona? Czy wystarczy tylko w header coś wpisać?
http://www.php.net/header( 'refresh: 0; '.$_SERVER[REQUEST_URI].'' );
http://www.php.net/header( 'refresh: 0; '.$_SERVER[REQUEST_URI].'' );
http://www.php.net/header("Location: index.php");
lepiej pokaż cały formularz logowanie ponieważ wygląda na to że sobie bardzo utrudniasz życie
Ale jak to wykorzystać dla każdej podstrony?
Przy logowaniu/rejestracji to robię ale gdy wchodzę np. w podstronę kontakt to pozostają stare dane tzn. Zaloguj itp.
http://www.php.net/header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1 http://www.php.net/header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past
http://www.php.net/header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1 http://www.php.net/header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past
Sprawdzam w IE, Firefoxie, Chrome i Operze.
Po wyczyszczeniu cache w przeglądarce wszystko działa ale później w podstronach zapamiętuje co było i gdy się wyloguję to wyświetla informacje dla zalogowanego.
Wątpie że jest to wina przeglądarek ponieważ na innych stronach nie mam takich problemów.
Cache na serwerze. Korzystam z webserva na localhoscie. Grzebałem w php.ini i wszystko powyłączałem. Dalej to samo.
Problem rozwiązany.
Wystarczył restart komputera i zaczęło hulać.
Chyba trzeba dopisać ten problem do twojego spisu
Dziękuję za pomoc.
Daję pomógł.
Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)