2011-12-07 6 views
2

私はsendToHostという関数を使用しています。この関数は、GET文字列を使用してサーバーにpingを実行し、応答を返します。httpsを処理するsendToHost()の代わりに

# Example of GET string: 
# sub.domain.com/api.php?a=1&b=2&c=3 
$var = sendToHost('sub.domain.com','get','/api.php','a=1&b=2&c=3'); 

ただし、セキュアサーバー(https)への送信は処理されません。

誰かがsendToHostに代わるPHP関数を知っていますか?

/* sendToHost 
* ~~~~~~~~~~ 
* Params: 
* $host - Just the hostname. No http:// or /path/to/file.html portions 
* $method - get or post, case-insensitive 
* $path - The /path/to/file.html part 
* $data - The query string, without initial question mark 
* $useragent - If true, 'MSIE' will be sent as the User-Agent (optional) 
* 
* Examples: 
* sendToHost('www.google.com','get','/search','q=php_imlib'); 
* sendToHost('www.example.com','post','/some_script.cgi', 
*    'param=First+Param&second=Second+param'); 
*/ 
function sendToHost($host,$method,$path,$data,$useragent=0) 
{ 
    // Supply a default method of GET if the one passed was empty 
    if (empty($method)) 
     $method = 'GET'; 
    $method = strtoupper($method); 
    $fp = fsockopen($host,80); 
    if ($method == 'GET') 
     $path .= '?' . $data; 
    fputs($fp, "$method $path HTTP/1.1\r\n"); 
    fputs($fp, "Host: $host\r\n"); 
    fputs($fp, "Content-Type: application/x-www-form-urlencoded\r\n"); 
    if ($method == 'POST') 
     fputs($fp, "Content-length: " . strlen($data) . "\r\n"); 
    if ($useragent) 
     fputs($fp, "User-Agent: MSIE\r\n"); 
    fputs($fp, "Connection: close\r\n\r\n"); 
    if ($method == 'POST') 
     fputs($fp, $data); 

    while (!feof($fp)) 
     $buf .= fgets($fp,128); 
    fclose($fp); 
    return $buf; 
} 

ありがとう:

はここSendToHostコードです。

答えて

1

カールを試しましたか?それはsslをサポートし、GNU/Linux上でうまく動作します。

+0

私はまだカールを試みていませんが、それは私のレーダー上にあります。 – Rob

+0

これらの行には、次の2つの便利な機能があります。http://www.php.net/manual/en/function.curl-exec.php#98628 – cgwyllie

関連する問題