[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:
Jak widać nie wiele trzeba, aby odświeżyć lub przekierować stronę z poziomu PHP.header('refresh: 1;');
// Tylko odświeżenie stronyheader('refresh: 1; url=https://localhost');
// Przekierowanie strony
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
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ń