Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [inne][PHP] Pobieranie zawartości strony na nowo.
Forum PHP.pl > Forum > Przedszkole
Harsay
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
co rozumiesz przez odświeżyć? masz ta samą strone otwartą na kilku kartach
Harsay
Rozumiem to przez kliknięcie przycisku "odśwież" w przeglądarce.
Stronę mam otwartą w jednej karcie.
piotr.mroczek
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
Winą może być używanie include?
Każda podstrona jest tworzona za pomocą funkcji która jest includowana.
piotr.mroczek
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
Dodam że ręczne odświeżenie jest wymagane nawet gdy zmienię sam tekst w pliku. (przed chwilą sprawdziłem)
strife
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
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
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ć? snitch.gif

hint: 1 link w mojej stopce wstydnis.gif
Harsay
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
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
  1. header( 'refresh: 0; '.$_SERVER[REQUEST_URI].'' );

Non stop odświeża.
strife
Cytat(Harsay @ 20.02.2012, 12:34:41 ) *
  1. header( 'refresh: 0; '.$_SERVER[REQUEST_URI].'' );

Non stop odświeża.

Miałeś przekierować, a nie odświeżać.

  1. header("Location: index.php");
prz3kus
lepiej pokaż cały formularz logowanie ponieważ wygląda na to że sobie bardzo utrudniasz życie smile.gif
Harsay
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
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
  1. header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
  2. header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past


Dalej nie działa.
strife
Cytat(Harsay @ 20.02.2012, 13:02:45 ) *
  1. header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
  2. 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
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
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
Problem rozwiązany.

Wystarczył restart komputera i zaczęło hulać.
Chyba trzeba dopisać ten problem do twojego spisu smile.gif

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.
Invision Power Board © 2001-2025 Invision Power Services, Inc.