[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 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, 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?

[HTML] Jak wycentrować stronę?