[PHP|HTML] Odświeżenie strony

W tym wpisie zajmiemy się odświeżaniem strony z poziomu PHP jak i poprzez odpowiedni tag meta. Zapewne tworząc jakąś stronę HTML nie raz spotkałeś się z tagiem meta refresh. Jak pamiętasz (lub nie) tag ten służy do odświeżania/przekierowania strony z poziomu klienta. W takim razie co zrobić, gdy chcemy takie odświeżenie lub przekierowanie wymusić po stronie serwera? W języku PHP z pomocą przychodzi nam funkcja header, która służy do wysyłania surowych nagłówków HTTP. Funkcja jest prosta w użyciu, a kod odświeżający stronę ogranicza się do jednej linii. My jednak napiszemy własną funkcję, która będzie odświeżała stronę. Nasza funkcja będzie oczywiście oparta o wbudowaną w PHP funkcję header.

Odświeżanie strony HTML

Aby emulować nagłówki HTTP z poziomu kodu HTML, należy użyć tagu meta http-equiv. Jeśli zatem chcemy odświeżyć lub przekierować stronę z poziomu przeglądarki, tworzymy w sekcji head taki tag:

<meta http-equiv="refresh" content="5; url=http://localhost">
Zastosowanie powyższego tagu poinformuje przeglądarkę, że strona ma być przekierowana. W atrybucie content ustawiamy czas w sekundach. Atrybut url jest opcjonalny, jeśli chcemy tylko odświeżyć stronę pomijamy go. Jeśli zaś przeglądarka ma zostać przekierowana na inny adres, podajemy nowy url.

W PHP sprawa jest prostsza, ponieważ jako argument dla funkcji header podajemy tylko nazwę nagłówka i czas. W praktyce wygląda to tak:

header('refresh: 1;'); // Tylko odświeżenie strony
header('refresh: 1; url=http://localhost'); // Przekierowanie strony
Jak widać nie wiele trzeba, aby odświeżyć lub przekierować stronę z poziomu PHP.

Na początku wpisu wspomniałem, że napiszemy własną funkcje wywołującą odświeżenie lub w razie potrzeby przekierowanie strony. Funkcja będzie przyjmowała dwa opcjonalne argumenty. Pierwszy to czas w sekundach (domyślnie będzie to 5), a drugi to url, na który ma nastąpić przekierowanie. Jeśli parametr url nie zostanie podany, strona zostanie tylko odświeżona.

function refresh($sec = 5, $url = '')

{

header('refresh: ' . $sec . ($url == '' ? '' : '; url=' . $url));

exit;

}
Przykładowe użycie funkcji:
refresh(3); // Odświeży aktualną stronę po 3 sekundach

Komentarze

  1. jak odświeżyć tylko fragment strony?

    OdpowiedzUsuń
  2. Co do fragmentów strony polecam zapoznać się z dynamicznymi zakładkami w jQuery : ) Masa tego na google : )

    OdpowiedzUsuń
  3. poczytaj o ajaxie

    OdpowiedzUsuń
  4. A da się ze odświeżanie serwerów? Bo mam masterboost i mi się nie odswiezaja

    OdpowiedzUsuń

Publikowanie komentarza

Popular

[HTML] Jak wstawić obrazek?

[PHP] Jak sprawdzić typ zmiennej?