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

Posty w temacie


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

 



RSS Aktualny czas: 5.10.2025 - 02:02