[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 stronyheader('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.
jak odświeżyć tylko fragment strony?
OdpowiedzUsuńCo do fragmentów strony polecam zapoznać się z dynamicznymi zakładkami w jQuery : ) Masa tego na google : )
OdpowiedzUsuńpoczytaj o ajaxie
OdpowiedzUsuńA da się ze odświeżanie serwerów? Bo mam masterboost i mi się nie odswiezaja
OdpowiedzUsuń