[PHP|HTML] Odświeżenie strony

W tym wpisie zajmiemy się odświeżaniem strony z poziomu PHP jak i poprzez odpowiedni metatag HTML. Zapewne tworząc lub modyfikując jakąś stronę HTML spotkałeś/-aś się kiedyś z tagiem meta refresh. Jak pamiętasz (lub nie) tag ten służy do odświeżania lub przekierowania na inny URL 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 do przeglądarki. Funkcja jest prosta w użyciu, a kod umożliwiający odświeżenie strony 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 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 zostać przekierowana na adres https://localhost. W atrybucie content ustawiamy czas w sekundach (w powyższym przykładzie przekierowanie nastąpi po 5-ciu sekundach). Atrybut url jest opcjonalny, jeśli chcemy tylko odświeżyć stronę pomijamy go. Jeśli zaś ma nastąpić przekierowanie na inny adres, podajemy docelowy 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=https://localhost'); // Przekierowanie strony

Jak widać nie wiele trzeba pisać, 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 argument 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ń

Prześlij komentarz

Dzięki za komentarz!

Popular

[C++] Jak obliczyć pole i obwód trapezu?

[HTML] Jak wyśrodkować tekst?

[PHP] Jak pobrać adres strony?