This class basically encapsulates the following four built in functions: fopen, file_get_contents, filesockopen, and curl.
The only reason I created this class is because sometime some of my work will work on some hosting and some will not because of the file open method I use. This will enable me to easily ask people to switch functions without having to implement much coding on their side.
The class allows users to add headers to file_get_contents, filesockopen, and curl (including referrals, cookies, field inputs, etc..).
Sample Implementation:
<?php require_once('fileOpen.class.php'); /* File Open fopen example */ $page = new openURL('http://www.google.com'); $page->doOpen(1); echo $page->returnPage(); /* File Open file_get_contents example */ $page = new openURL('http://www.google.com'); $page->addToFileGetContents('method','GET'); $page->doOpen(2); echo $page->returnPage(); /* File Open fsockopen example */ $page = new openURL('www.google.com'); $page->addToFsockopen("GET / HTTP/1.1"); $page->addToFsockopen("Host: www.google.com"); $page->addToFsockopen("Connection: Close\r\n"); $page->doOpen(3); echo $page->returnPage(); /* File Open curl example */ $page = new openURL('us3.php.net/search.php'); $page->addToCurl(CURLOPT_REFERER,'us3.php.net'); $page->addToCurl(CURLOPT_POST,1); $page->addToCurl(CURLOPT_POSTFIELDS,'pattern=curl&show=quickref&lang=en'); $page->addToCurl(CURLOPT_FOLLOWLOCATION,true); $page->doOpen(4); echo $page->returnPage(); /* Check for any errors */ /* if($page->errorNumber) { echo "$page->errorNumber ($page->errorMessage)<br />\n"; } */
Main Class:
<?php /* Class for the Open */ class openURL { /* Page content */ private $pageContent; /* Page URL */ private $pageURL; /* Error number */ public $errorNumber = NULL; /* Error message */ public $errorMessage = NULL; /* Fsockopen Headers array */ private $fsockopenHeaders = array(); /* Curl Options */ private $curlOptions = array(); /* File Get Contents Array */ private $fgcOptions = array(); /* Page Handeler */ private $fileHandler; /* constructor, set page url */ public function __construct($pageURL) { $this->pageURL = $pageURL; } public function doOpen($openOption) { /* do actual opening */ switch ($openOption) { /* fopen */ case 1: $this->myfopen(); break; /* file_get_contents */ case 2: $this->myfile_get_contents(); break; /* fsockopen */ case 3: $this->myfoscokopen(); break; /* curl */ case 4: $this->mycurl(); break; } } /* Add to curl options */ public function addToCurl($curlOption,$curlValue){$this->curlOptions[$curlOption] = $curlValue;} /* Add to headers for fsockopen */ public function addToFsockopen($headerText){$this->fsockopenHeaders[] = $headerText;} /* Add to stream context (file_get_contents) */ public function addToFileGetContents($fgcOption,$fgcValue){$this->fgcOptions[$fgcOption] = $fgcValue;} /* Return page content */ public function returnPage(){ return $this->pageContent;} /* Function to compose headers for fsockopen */ private function composefsoHeaders() { $tempUse = NULL; foreach($this->fsockopenHeaders as $curHeader) { $tempUse .= $curHeader."\r\n"; } $tempUse .= "\r\n"; return $tempUse; } /* Function to compose headers for file_get_contents */ private function composefgcHeaders() { $tempUse = array( 'http' => array() ); foreach($this->fgcOptions as $fgcOption => $fcgValue) { $tempUse['http'][$fgcOption] = $fcgValue."\r\n"; } return $tempUse; } /* Actual read contents */ private function readContents() { $tempUse = NULL; while (!feof($this->fileHandler)) { $this->pageContent .= fread($this->fileHandler,1024); } unset($tempUse); } /* fopen function */ public function myfopen() { /* use ob_start to record errors */ ob_start(); $this->fileHandler = fopen($this->pageURL,'r'); if($this->fileHandler) { ob_end_clean(); $this->readContents(); fclose($this->fileHandler); } else { $this->errorMessage = ob_get_contents(); $this->errorNumber = '001-FPE'; ob_end_clean(); } } /* file_get_contents function */ public function myfile_get_contents() { $context = stream_context_create($this->composefgcHeaders()); ob_start(); $this->pageContent = file_get_contents($this->pageURL,false, $context); $this->errorMessage = ob_get_contents(); /* check for errors */ if($this->errorMessage != NULL) { $this->errorNumber = '002-FPE'; } ob_end_clean(); } /* fsockopen function */ public function myfoscokopen() { /* Supress errors using ob_start */ ob_start(); $this->fileHandler = fsockopen($this->pageURL, 80,$this->errorNumber, $this->errorMessage, 30); if($this->fileHandler) { fwrite($this->fileHandler,$this->composefsoHeaders()); ob_end_clean(); $this->readContents(); } else { $this->errorMessage .= ob_get_contents(); $this->errorNumber = '003-FPE'; ob_end_clean(); } } /* curl function */ public function mycurl() { $this->fileHandler = curl_init(); curl_setopt($this->fileHandler, CURLOPT_URL, $this->pageURL); curl_setopt($this->fileHandler, CURLOPT_RETURNTRANSFER, true); foreach($this->curlOptions as $option => $value) { curl_setopt($this->fileHandler, $option, $value); } $this->pageContent = curl_exec($this->fileHandler); $this->errorMessage = curl_errno($this->fileHandler); $this->errorNumber = curl_error($this->fileHandler); curl_close($this->fileHandler); } }