StackOverflowNewbie
StackOverflowNewbie

Reputation: 40633

How to send and receive headers via PHP

I'd like to study how headers are sent and received.

I know about PHP's header function and think I can just look at an actual request header (e.g. using Firebug) and make identical requests to a server (including spoofing the User-Agent). Is this correct?

The other problem is how do I get the header responses back? I want to analyze the response.

Thanks.

EDIT:

@Tatu, here's the code I ran:

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "http://www.google.com/");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/540.0 (KHTML, like Gecko) Ubuntu/10.10 Chrome/8.1.0.0 Safari/540.0');

$result = curl_exec($ch);
curl_close($ch);

header('Content-type: text/plain');
echo($result);

Upvotes: 0

Views: 1466

Answers (2)

Tatu Ulmanen
Tatu Ulmanen

Reputation: 124768

You might want to take a look at cURL which will allow you to make requests and set and inspect headers. PHP's header only sets headers for the current page, you cannot use that to spoof your user agent – these are headers set by the server and as such have no such significance.

The basic structure of a cURL request with custom headers might be something like this:

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "http://www.example.com/");
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, "Your user agent");

$result = curl_exec($ch);
curl_close($ch);

The beginning of $result will now contain the headers received from the server.

Upvotes: 3

Nasir
Nasir

Reputation: 11401

If you want to send headers yourself, without using cURL, check out sockets in PHP.

http://php.net/sockets

Upvotes: 1

Related Questions