Tag Archives: header

header pentru continut XML generat in PHP

Daca aveti un script care genereaza un XML ca output, atunci este necesar a zice browser-ului: “… iti trimit un XML”. Implict, un browser asteapta sa primeasca pagini HTML si daca nu se specifica faptul ca trimiti alt tip de continut, o sa il prelucreze ca un HTML simplu.

Pentru a anunta browserul despre continutul ce urmeaza sa il primeasca, se trimite un header special pentru pagina respectiva: “Content-Type” si diferite valori pentru el, de exemplu:

  • pentru HTML: Content-Type: text/html
  • pentru XML: Content-Type: text/xml
  • pentru PDF: Content-Type: application/pdf

Pentru a trimite aceste informatii din PHP se utilizeaza functia header :

1
2
3
4
void header ( string $string
      [, bool $replace = true
      [, int $http_response_code ] ]
    )

Si acum pentru cazul nostru, (file: xml.php):

1
2
3
4
5
6
<?php  
  header( "Content-Type: text/xml" );  
?>
<continut_XML>
  ...
</continut_XML>

NB: Trebuie sa specific faptul ca este necesar sa se trimita headerele paginei inainte de a se trimite continutul paginii si o sa aveti o eroare/warning daca trimiteti continut (chiar si un spatiu) dupa care trimiteti headerele. Un exemplu al acestui caz care trebuie sa il evitati:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
  echo " ";
  //deja e trimis un spatiu ca continut din pagina si
  // respectiv toate hederele paginii au fost trimise catre browser
  // ....
  // ceva prelucrari...
  // ....
  header( "Content-Type: text/xml" );
  // prea tarziu de a trimite headere custom,
  // ele deja au fost trimise.
?>
<continut_XML>
  ...
</continut_XML>

atat.