Duidelijkheid en verwerking

HTTP en ook PHP heeft aan ontzettend veel gedacht. Zo kan de header functie veel meer dan ik wist, voordat ik sockets een http requests ontdekte.

Huh wat bedoel ik!?
Dit: wat je net zag was onduidelijk. Lange zinnen, afgebroken, of niet, ligt aan je browser, lettertypes, zag ik ergens een html tag? Wow wat een hoop info!?!?!
Je bent aan t developen dus je wil duidelijkheid! Een hele makkelijke manier om data te printen (vooral data die je net opgehaald hebt uit een socket) is als plain text :)
Klinkt bekend? Should!
Zet het volgende net boven waar je je output print:

Header("content-type: text/plain");

Dan zal je browser de output niet meer als HTML beschouwen, maar als een plain tekst bestand. Dus geen afgebroken regels en gekke lettertypen. Wel duidelijkheid!

Het script op www.jouwmoeder.nl/external_socket.php is om te testen. Het print GET en POST variabelen. Zoals je in de headers kan zien die we net ontvangen hebben, is het Content-Type: text/plain. Dat zie je als je naar http://www.jouwmoeder.nl/external_socket.php surft. Geen html in de source (zoals <pre> o.i.d.) en toch nette duidelijke code die makkelijk te lezen is.


Verwerking
Hoe het leest is natuurlijk geweldig interessant, maar vooral niet boeiend :)
Als je een script schrijft, zoals we net gedaan hebben, dat headers en body leest, is de Content-Type eigenlijk helemaal niet interessant. Je bent namelijk geen browser die er iets mee gaat doen. Voor ons is het gewoon text en text is text. Maar ook images zijn text, en zelfs flash en films. Alles is text ;) Zelfs binary is text. Het maakt allemaal niet meer uit. Je kan een bestand downloaden (de output van een extern programma) met behulp van sockets. Met behulp van HTTP Requests eigenlijk. Voor de simpelste GET request (get op /) is er natuurlijk file_get_contents(), maar als er paar vars mee moeten als POST data... Tsja, daar zit je dan met je file_get_contents(). Sockets dus!

Veiligheid
Ik bedoel niet HTTPS of SFTP o.i.d. Ik wil het alleen over http hebben.
Het is dan ook niet officieel iets veiligs, maar je kan ongelooflijk veel met http headers (geloof je me al?).
Zoals je net in de response headers zag, stonden er drie (meer?) "vreemde" headers in. En alleen om aan te tonen wat je kan met informatie die niemand niemand niemand ziet!
Ik heb drie secrets meegestuurd die een browser nooit zou opmerken. Omdat je browser er niks mee kan, worden ze genegeerd. Jouw programma kan er echter waardevolle data uithalen! Of niet!? Misschien niet, maar de mogelijkheid is er wel...
En andersom ook! Ik kan headers meesturen die je normaal nooit mee kan sturen. Niet m.b.v. een formulier (POST) en ook niet als gewoon GET.
Ik doe een simpele GET request naar mijn server om bijvoorbeeld in te loggen. Ik had het als POST request kunnen doen met user en pass als data. Ik kan het ook doen met user en pass in de http headers :)
Hoe?
Zo...

« Lees de omschrijving en reacties

Inhoudsopgave

  1. De functies
  2. HTTP Requests! Nieuw?
  3. GET en POST requests
  4. Duidelijkheid en verwerking
  5. secrets in http headers
  6. Afsluiting
  7. request
  8. request
  9. response
  10. response

PHP tutorial opties

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.