Показать сообщение отдельно

  #43  
Старый 16.02.2007, 22:51
Аватар для Abra
Abra
Постоянный
Регистрация: 17.09.2005
Сообщений: 375
Провел на форуме:
993362

Репутация: 175
По умолчанию

удобная универсальная функция для работы с сокетами.

PHP код:
function httpSocketConnection($host$method$path$data)
   {
       
$method strtoupper($method);       
      
       if (
$method == "GET")
       {
           
$path.= '?'.$data;
       }   
      
       
$filePointer = @fsockopen($host80$errorNumber$errorString);
      
       if (!
$filePointer)
       {
           exit(
'Failed opening http socket connection: '.$errorString.' ('.$errorNumber.')<br/>\n');
           return 
false;
       }

       
$requestHeader $method." ".$path."  HTTP/1.1\r\n";
       
$requestHeader.= "Host: ".$host."\r\n";
       
$requestHeader.= "User-Agent:      Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1) Gecko/20061010 Firefox/2.0\r\n";
       
$requestHeader.= "Content-Type: application/x-www-form-urlencoded\r\n";

       if (
$method == "POST")
       {
           
$requestHeader.= "Content-Length: ".strlen($data)."\r\n";
       }
      
       
$requestHeader.= "Connection: close\r\n\r\n";
      
       if (
$method == "POST")
       {
           
$requestHeader.= $data;
       }           

       
fwrite($filePointer$requestHeader);
      
       
$responseHeader '';
       
$responseContent '';

       do
       {
           
$responseHeader.= fread($filePointer1);
       }
       while (!
preg_match('/\\r\\n\\r\\n$/'$responseHeader));
      
      
       if (!
strstr($responseHeader"Transfer-Encoding: chunked"))
       {
           while (!
feof($filePointer))
           {
               
$responseContent.= fgets($filePointer128);
           }
       }
       else
       {

           while (
$chunk_length hexdec(fgets($filePointer)))
           {
               
$responseContentChunk '';
          
               
//logEventToTextFile('debug', $chunk_length);
               
$read_length 0;
              
               while (
$read_length $chunk_length)
               {
                   
$responseContentChunk .= fread($filePointer$chunk_length $read_length);
                   
$read_length strlen($responseContentChunk);
               }

               
$responseContent.= $responseContentChunk;
              
               
fgets($filePointer);
              
           }
          
       }

       
//logEventToTextFile('debug', $responseContent);
      
      
       
return chop($responseContent);
   } 
пример использования:
PHP код:
$data="var1=test&var2=test2";
$host "www.somesite.com";
$path "http://www.somesite.com/test.php";
$method "POST";

echo 
httpSocketConnection($host$method$path$data); 
 
Ответить с цитированием