Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Nie za krótkie rozważania nad funkcją header(), Kilka moich pytań i podejrzeń odnośnie tej użytecznej funkcji
MySQL
post
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 (IMG:http://forum.php.pl/style_emoticons/default/rolleyes.gif)

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.:
  1. <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />
  2. <meta http-equiv="Expires" content="Fri, 01 Jan 2010 01:00:00 GMT" />
  3. <meta http-equiv="Last-Modified" content="Tue, 12 May 2009 12:00:00 GMT" />
  4. <meta http-equiv="Cache-Control" content="no-store, no-cache, must-revalidate" />
  5. <meta http-equiv="Cache-Control" content="post-check=0, pre-check=0" />
  6. <meta http-equiv="Pragma" content="no-cache" />
  7. <meta http-equiv="Reply-To" content="chor@umk.pl" />
  8. <meta http-equiv="Content-Language" content="pl" />
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:
  1. <?php
  2. header('Content-Type: application/xhtml+xml; charset=utf-8');
  3. header('Expires: Thu, 01 Jan 2009 01:00:00 GMT');
  4. header('Last-Modified: '.($gmd = gmdate('D, d M Y H:i:s')).' GMT');
  5. header('Cache-Control: no-store, no-cache, must-revalidate');
  6. header('Cache-Control: post-check=0, pre-check=0', false);
  7. header('Pragma: no-cache');
  8. header('Reply-To: chor@umk.pl');
  9. header('Content-Language: pl');
  10. ?>
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:
  1. <?php
  2. ...
  3.  header('Content-Type: application/xhtml+xml; charset=utf-8');
  4.  ...
  5.  echo '<'.'?xml version="1.0" encoding="UTF-8" standalone="no" ?'.'>'."\n";
  6.  echo '<'.'?xml-stylesheet type="text/css" href="style.css" ?'.'>'."\n";
  7. ?>
  8. <!DOCTYPE html
  9.  PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  10.  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  11. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl">
  12. <head>
  13.  <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />
  14. ...
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 (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

PS. Za kazda rzeczowa odpowiedz przydziele plusika (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Nie chodzi mi o to zeby zrobic z tego watku jakas zabawe ale naprawde zalezy mi na odpowiedzi na te pytania

Ten post edytował MySQL 12.05.2009, 12:00:45
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
MySQL
post
Post #2





Grupa: Zarejestrowani
Postów: 71
Pomógł: 4
Dołączył: 3.06.2008

Ostrzeżenie: (0%)
-----


Cytat(MySQL @ 12.05.2009, 12:17:18 ) *
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)?
Cytat(sowiq @ 12.05.2009, 13:30:03 ) *
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>) (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

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
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 10.10.2025 - 02:56