Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ Przedszkole _ [inne][PHP] Pobieranie zawartości strony na nowo.

Napisany przez: 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.

Napisany przez: piotr.mroczek 20.02.2012, 10:09:45

co rozumiesz przez odświeżyć? masz ta samą strone otwartą na kilku kartach

Napisany przez: Harsay 20.02.2012, 10:10:34

Rozumiem to przez kliknięcie przycisku "odśwież" w przeglądarce.
Stronę mam otwartą w jednej karcie.

Napisany przez: 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.

Napisany przez: 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.

Napisany przez: 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)

Napisany przez: 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)

Napisany przez: 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.

Napisany przez: 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ć.

Napisany przez: 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ć? snitch.gif

hint: 1 link w mojej stopce wstydnis.gif

Napisany przez: 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ć?

Napisany przez: 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.

Napisany przez: Harsay 20.02.2012, 12:34:41

  1. http://www.php.net/header( 'refresh: 0; '.$_SERVER[REQUEST_URI].'' );

Non stop odświeża.

Napisany przez: strife 20.02.2012, 12:40:25

Cytat(Harsay @ 20.02.2012, 12:34:41 ) *
  1. http://www.php.net/header( 'refresh: 0; '.$_SERVER[REQUEST_URI].'' );

Non stop odświeża.

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

  1. http://www.php.net/header("Location: index.php");

Napisany przez: prz3kus 20.02.2012, 12:42:15

lepiej pokaż cały formularz logowanie ponieważ wygląda na to że sobie bardzo utrudniasz życie smile.gif

Napisany przez: 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.

Napisany przez: 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.

Napisany przez: Harsay 20.02.2012, 13:02:45

  1. http://www.php.net/header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
  2. http://www.php.net/header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past


Dalej nie działa.

Napisany przez: strife 20.02.2012, 13:11:56

Cytat(Harsay @ 20.02.2012, 13:02:45 ) *
  1. http://www.php.net/header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
  2. http://www.php.net/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ć.

Napisany przez: 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.


Napisany przez: 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?

Napisany przez: 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 smile.gif

Dziękuję za pomoc.
Daję pomógł.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)