note 26334 deleted from function.fopen by wez

From: Date: Wed, 14 May 2003 23:10:53 +0000
Subject: note 26334 deleted from function.fopen by wez
References: 1  Groups: php.notes 
Request: Send a blank email to php-notes+get-48000@lists.php.net to get a copy of this message
I've found that some servers don't support HTTP/1.0 and will actually return a 403 error (forbidden). This is especially true with Google (my favorite search engine). So, in order to get around this limitation of the fopen command I wrote a routine to use HTTP/1.1 instead (i wrote a simple check for a 403 from fopen first, but this is the important piece)... <START CODE> $GrabURL = "/search"; $sockhandle = fsockopen("www.google.com", 80, &$errno, &$errstr); if(!$sockhandle) { print "server not available!"; } else { $request = "GET $GrabURL HTTP/1.1\r\n"; $request .= "User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows 98)\r\n"; $request .= "Host: www.google.com\r\n"; $request .= "Connection: Close\r\n\r\n"; fputs($sockhandle, $request); $line = fgets($sockhandle, 1024); //Request Method $line = fgets($sockhandle, 1024); //Close Method $line = fgets($sockhandle, 1024); //Server Type $line = fgets($sockhandle, 1024); //Date $line = fgets($sockhandle, 1024); //Transfer-Encoding $line = fgets($sockhandle, 1024); //Content-Type $line = fgets($sockhandle, 1024); //Cache-control $line = fgets($sockhandle, 1024); //Set-Cookie $line = fgets($sockhandle, 1024); //End Header "space" $content = ""; while (!feof($sockhandle)) { $line = fgets($sockhandle, 1024); //Packet length $length = hexdec($line); $content .= fread($sockhandle, $length); //Packet data } print $content; } fclose($sockhandle); <END CODE> If you have any questions feel free to email me, to see this code working in action visit http://google.compholio.com/. If you are curious as to why I did this it's because the custom google search doesn't show up properly if you set the links to be white, so I tacked on some HTML to turn the links the appropriate color but not screw everything else up. As of this posting my IP address was in the process of changing, so if you can't reach the site try again in a day or so.

« previous php.notes (#48000) next »