![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 71 Pomógł: 4 Dołączył: 3.06.2008 Ostrzeżenie: (0%) ![]() ![]() |
Z czasem kazdy programista dochodzi to etapu, gdzie porzuca nauke przez bezmyslne wklepytanie kodu z ksiazki czy ze strony, a zaczyna zastanawiac sie nad tym jak to wszystko sie tam dzieje.
W moim przypadku swoje rozwazania stanely nad funkcja header() o bogatych umiejetnosciach ale biednej dokumentacji (moim zdaniem). Zaczynamy ![]() PYTANIE 1. Standardowa strona (X)HTML sila rzeczy nie korzysta z funkcji header bo nie moze ale za to wstawia sie rozne rzeczy w znaczniki meta np.: Celowo pokazalem tylko atrybuty http-equiv, gdzyz tylko one definiuja wartości dla nagłówka strony. W znaczniku meta moga byc jeszcze atrybuty name. Zauwazyc mozna (po niezbyt wnikliwej analizie), ze funkcja header() wykorzystuje tylko wartosci atrybutu http-equiv i odpowiadajaca mu wartosc atrybutu content. Pierwsze pytanie jest wiec nastepujace: PYT: Czy stosujac w skrypcie *.php funkcje header mozna juz nie pisac tych znacznikow <meta> z atrybutem http-equiv? PYTANIE 2. (techniczne i krotkie) Kazdy kto zetknal sie z ta funkcja przeczytal ze wysyla ona surowy naglowek HTTP Cytat(http://php.net.pl/manual/pl/function.header.php) header() is used to send a raw HTTP header. Nie bede sie rozwodzic nad samym protokolem, gdyz jest on wysmienicie opisany na stronie RFC Sourcebook.PYT: Czy funkcja header jest odpowiedzialna za przekazanie serwerowi (komputerowi na ktorym jest zainstalowany interpreter PHP) informacji jak ma uzupelnic naglowek protokolu HTTP przed wyslaniem do klienta (do przegladarki dzialajacej na komputerze klienckim)? PYTANIE 3. (rozwiniecie mysli z pyt. 2) Googlujac z haslem header i czytajac to co moze ona przyjac jako swoj parametr, pewnie znajdzie sie okolo 10 - 15 wartosci, np: Jednakze na podanej wyzej przeze mnie stronie RFC Sourcebook widac, ze protokol HTTP ma bardzo duzo pol w naglowku. PYT: Czy znajac dopuszczalne wartosci tych pol z naglowka tego protokolu moge z powodzeniem stosowac je do funkcji header() w skrypcie jezeli uznam to za konieczne? PYTANIE 4. (strona kodowa) Pisze skrypty wykorzystujac kodowanie utf-8. Jezeli zlicze miejsca, gdzie jest jakakolwiek deklaracja strony kodowej to okaze sie ze sa trzy takie miejsca: Widzimy, ze w linii 4, 6 i 14 sa deklaracje tej strony kodowej. PYT: Czy sa one wszystkie potrzebne? Zwlaszcza deklaracja w linii 4 i 14 (bo deklaracja w linii 6 nie jest obowiazkowa. Jak sie nie napisze to domyslne kodowanie dla XML jest wlasnie w utf-8)? ____________________________________________ Mam nadzieje ze nikogo nie zanudzilem ![]() PS. Za kazda rzeczowa odpowiedz przydziele plusika ![]() Ten post edytował MySQL 12.05.2009, 12:00:45 -------------------- Pozdrawiam serdecznie
Krzysiek |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Proszę zmień swój post bo przesadziłeś z jego upiększaniem (kolory, wytłuszczanie).
Odpowiedź na większość swoich pytań możesz... samemu otrzymać. 1) Ściągamy Firefoxa. 2) Instalujemy dodatek firebug. 3) Sprawdzamy przy jego pomocy jakie nagłówki zostały wysłane w odpowiedzi na żądanie przeglądarki. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 1 233 Pomógł: 87 Dołączył: 6.03.2009 Ostrzeżenie: (40%) ![]() ![]() |
[cytat]
Czy funkcja header jest odpowiedzialna za przekazanie serwerowi (komputerowi na ktorym jest zainstalowany interpreter PHP) informacji jak ma uzupelnic naglowek protokolu HTTP przed wyslaniem do klienta (do przegladarki dzialajacej na komputerze klienckim)? [/cytat] Tia. po to to jest. Nie zaszkodzi napisać tu i tu, nie wiadomo jak wygląda implementacja programu parsujacego te informacje dane, co zrobi jesli w jedym miejscu bedzie taka a w drugim inna deklaracja. Standardowe naglowki wysylane przez serwer w zupelnosci wystarczaja do poprawnego wyswietlenia strony www. Nastrasz administratora swojego serwera tworzac skrypt wysylajacy naglowek o kodzie 500 ![]() |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 71 Pomógł: 4 Dołączył: 3.06.2008 Ostrzeżenie: (0%) ![]() ![]() |
Crozin No dobra. Jezeli mam rozumiec, ze Twoj post jest odpowiedzia na pytanie nr 2, to zakladam, ze jest to odpowiedz twierdzaca
![]() PS. Ale bez urazy... Nie lubie odpowiedzi typu: Sciagnij, Zainstaluj, Zobacz. Pamietaj, ze kazdy ma swoje upodobania co do korzystania z software'u i sugerowanie komus aby sciagnal i zainstalowal jakas aplikacje zeby sprawdzic jedna rzecz i odpowiedziec na jedno krotkie pytanie ('tak', 'nie') troszke mija sie z celem. Ja jestem zwolennikiem Opery, a druga rzecz teraz pisze z komputera nieswojego (w dodatku na Linuksie), gdzie choc jest Firefox, to nie mam uprawnien do doinstalowywania czegokolwiek. Gdybym wszystko instalowal co ludzie sugeruja to co dwa miesiace musialbym reinstalowac system od nowa bo pracowac by sie na nim nie dalo ![]() OK zostalo jeszcze kilka pytan ![]() Ten post edytował MySQL 12.05.2009, 12:02:16 -------------------- Pozdrawiam serdecznie
Krzysiek |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 1 890 Pomógł: 339 Dołączył: 14.12.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
1. TAK. Możesz to sprawdzić np. ustawiając kodowanie tylko w jednym miejscu.
2. Nie rozumiem za bardzo o co pytasz. 3. Tak, o ile wszystkie przeglądarki (czyt.: IE też) to obsłużą. Bo chyba wszyscy wiedzą gdzie badzIEwie ma standardy... 4. Nagłówek w linii 14 nic Ci nie da. Dokument będzie wczytywany jako XHTML tylko jeśli przeglądarka dostanie nagłówek przed rozpoczęciem wczytywania treści strony. Z tego wynika, że czasami (zawsze?) nagłówki wysłane za pomocą header() są lepszym rozwiązaniem. Jest takie małe i bardzo fajne rozszerzenie do FF jak LiveHTTPHeaders. Potestuj. Ten post edytował sowiq 12.05.2009, 12:30:45 |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 71 Pomógł: 4 Dołączył: 3.06.2008 Ostrzeżenie: (0%) ![]() ![]() |
PYT: Czy funkcja header jest odpowiedzialna za przekazanie serwerowi (komputerowi na ktorym jest zainstalowany interpreter PHP) informacji jak ma uzupelnic naglowek protokolu HTTP przed wyslaniem do klienta (do przegladarki dzialajacej na komputerze klienckim)? 2. Nie rozumiem za bardzo o co pytasz. Mialem na mysli co to jest ten 'surowy naglowek'. Kiedys (teraz sie z tego sam smieje) myslalem, ze funkcja header() uzupelnia po prostu kod (X)HTML'a, w taki sposob, ze nie trzeba pisac odpowiednich znacznikow <meta>. Chociaz poniekad jest to prawda, poniewaz jak napisales w odpowiedzi na pierwsze pytanie mozna nie pisac wowczas tych znacznikow (ale nie jest juz prawda ze uzupelnia kod przed wyslaniem o odpowiednie znaczniki <meta>) ![]() Czyli wracajac do drugiego pytania. Chodzi mi o to czy dobrze mysle, ze funkcja header() "wypelnia" po prostu pola w naglowku protokolu HTML wiadomosci wysylanej do przegladarki na komputerze klienta. Ten post edytował MySQL 12.05.2009, 13:19:52 -------------------- Pozdrawiam serdecznie
Krzysiek |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 1 890 Pomógł: 339 Dołączył: 14.12.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
~wNogachSpisz odpowiedział Ci. Jest właśnie tak jak napisałeś.
A co do meta http-equiv - to właśnie te nagłówki powstały, żeby zastąpić header(), a nie odwrotnie ![]() I jeszcze jedno: Cytat funkcja header() "wypelnia" po prostu pola w naglowku Ja bym tego tak nie nazwał, bo znaczyłoby to, że jeśli nie wywołasz header(), to nagłówek idzie pusty. Funkcja po prostu tworzy kolejne nagłówki. Zainstaluj sobie rozszerzenie do FF, które podałem wcześniej i spróbuj ustawić jakiś oderwany od rzeczywistości nagłówek. Zobacz:
Cytat GET /test.php HTTP/1.1
[...] HTTP/1.x 200 OK [...] Test: test [...] Content-Type: text/html Ten post edytował sowiq 12.05.2009, 12:59:57 |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 1 233 Pomógł: 87 Dołączył: 6.03.2009 Ostrzeżenie: (40%) ![]() ![]() |
jakie naglowki poza: content type, kodowanie i cache moga jeszcze kolidowac ze soba?
![]() |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 71 Pomógł: 4 Dołączył: 3.06.2008 Ostrzeżenie: (0%) ![]() ![]() |
Przed chwila sprawdzilem na FF jedna rzecz:
Kiedy w skrypcie *.php mialem zarowno funkcje header() jak i odpowiadajace im znaczniki meta, to kiedy wybralem "Pokaz informacje o stronie". Byly tam wyszczegolnione uzyte atrybuty ze znacznikow meta. Kiedy usunalem naglowki, to choc kodowanie nadal bylo utf-8 (czyli faktycznie uzywajac header() mozna pominac naglowki) to jednak w "Pokaz informacje o stronie" nie bylo ich... Przyklad: Jezeli jakis robot indeksuje strony w internecie i wejdzie na strone, ktora zabrania indeksowania to odczytuje ta wiadomosc (zabraniajaca indeksowania) z naglowka protokolu HTML przesylanej strony czy ze znacznika <meta>? Cytat(sowiq) Dokument będzie wczytywany jako XHTML tylko jeśli przeglądarka dostanie nagłówek przed rozpoczęciem wczytywania treści strony. A konkretnie jaki musi dostac zeby wiedziala ze przetwarza wlasnie dokument XHTML'a? Ja to robie w taki sposob, jak czegos brakuje to prosze o uzupelnienie:Takie cos wystarczy czy trzeba jeszcze jakis naglowek dodac (albo cos zmienic)? -------------------- Pozdrawiam serdecznie
Krzysiek |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 1 890 Pomógł: 339 Dołączył: 14.12.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Sam sobie odpowiedz. http-equiv = ekwiwalent http. Znaczy to tylko tyle, że każdy nagłówek wysłany przez serwer możesz ustawić w meta-tagach. Problem tylko w tym, że nie wszystkie zadziałają poprawnie (np. wspomniane wcześniej definiowanie MIME dla xhtml).
[edit] Zmieniłeś posta i moja odpowiedź nie trzyma się kupy z niczym ![]() @up, IE Ci tego nie łyknie. Ja używałem czegoś w tym stylu:
A Pokaż informacje o stronie najprawdopodobniej zczytuje te informacje z mea-tagów. Pytałeś jeszcze o wyszukiwarki - najprawdopodobniej olewają one wszelkie nagłówki i dobrze jest zawrzeć meta-tagi właśnie dla nich. Ten post edytował sowiq 12.05.2009, 13:35:57 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 11:04 |