Harsay
20.02.2012, 10:08:00
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.
piotr.mroczek
20.02.2012, 10:09:45
co rozumiesz przez odświeżyć? masz ta samą strone otwartą na kilku kartach
Harsay
20.02.2012, 10:10:34
Rozumiem to przez kliknięcie przycisku "odśwież" w przeglądarce.
Stronę mam otwartą w jednej karcie.
piotr.mroczek
20.02.2012, 10:37:03
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.
Harsay
20.02.2012, 10:40:02
Winą może być używanie include?
Każda podstrona jest tworzona za pomocą funkcji która jest includowana.
piotr.mroczek
20.02.2012, 10:46:30
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)
Harsay
20.02.2012, 11:11:59
Dodam że ręczne odświeżenie jest wymagane nawet gdy zmienię sam tekst w pliku. (przed chwilą sprawdziłem)
strife
20.02.2012, 11:16:16
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.
Harsay
20.02.2012, 11:20:30
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ć.
strife
20.02.2012, 11:24:01
Cytat(Harsay @ 20.02.2012, 11:20:30 )

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ć.
Dokładnie. A szukałeś na forum czemu masz taki błąd i
jak się go pozbyć?

hint: 1 link w mojej stopce
Harsay
20.02.2012, 12:25:09
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ć?
strife
20.02.2012, 12:26:19
Cytat(Harsay @ 20.02.2012, 12:25:09 )

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ć
No a ile razy Ci się niby odświeża? Rzuć może kawałkiem kodu.
Harsay
20.02.2012, 12:34:41
header( 'refresh: 0; '.$_SERVER[REQUEST_URI
].'' );
Non stop odświeża.
strife
20.02.2012, 12:40:25
Cytat(Harsay @ 20.02.2012, 12:34:41 )

header( 'refresh: 0; '.$_SERVER[REQUEST_URI
].'' );
Non stop odświeża.
Miałeś
przekierować, a nie odświeżać.
header("Location: index.php");
prz3kus
20.02.2012, 12:42:15
lepiej pokaż cały formularz logowanie ponieważ wygląda na to że sobie bardzo utrudniasz życie
Harsay
20.02.2012, 12:43:21
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.
strife
20.02.2012, 12:47:32
Cytat(Harsay @ 20.02.2012, 12:43:21 )

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.
Przypadkiem to nie jest wina cache'u przeglądarki? Próbowałeś innymi to testować?
Można jeszcze nagłówkami wymusić czyszczenie cache'u przeglądarki, może to pomóc.
Harsay
20.02.2012, 13:02:45
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1 header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past
Dalej nie działa.
strife
20.02.2012, 13:11:56
Cytat(Harsay @ 20.02.2012, 13:02:45 )

header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1 header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past
Dalej nie działa.
Wyklucz jeszcze winę przeglądarek, pod jakimi sprawdzasz? Pod wszystkimi, w których sprawdzasz jest ten sam błąd?
Jesteś też pewien czy od strony php nie ma jakiegoś systemu cache, który może to powodować?
W ostateczności daj adres do tej strony i dane jak się zalogować.
Harsay
20.02.2012, 14:14:31
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.
strife
20.02.2012, 19:50:23
Cytat(Harsay @ 20.02.2012, 14:14:31 )

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.
No to musisz mieć gdzieś błąd logiczny w skrypcie, może coś z sesjami?
Harsay
21.02.2012, 09:57:18
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ł.
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.