Category Archives: PHP

news.ycombinator

In timpul liber mai citesc din diferite surse de informatii despre ce se mai intimpla… blablabla… ca tot omu curios. Una dintre cele mai monitorizate surse de catre mine e cea de la ycombinator pentru ca acolo se gasesc unii sa posteze ceva linkuri interesante si pentru mine (recunosc ca nu tot ce se posteaza acolo e coool).

Avand deja experienta in a da refresh deseori la pagina celor de yc am dat de un “feature” cred foarte enervant pentru mine ca cititor. Ei folosesc un mecanizm de paginare/sesiuni foarte necunoscut mie si se intimpla deseori sa citesc ceva noutati mai vechi de pe pagina a 3-a sau a 4-a dupa care sa imi expire variabila de sesiune, ne mai putand naviga mai departe noutatile de pe pagina a 5-a.

Continue reading news.ycombinator

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.