プロが教える店舗&オフィスのセキュリティ対策術

お世話になります。

現在自作ブログからphpによる各PingサーバへのPing送信を試みていますが、
チェックしてみると下記のようなエラーが出てしまいます。

色々と調べて、サンプルを応用してみたのですが。。。
原因がわかりましたら是非ご教授ください。

よろしくお願いいたします。

下記のFunctionを実行します。
$titleと$siteurlの値は問題なく入っています。

function SendPing($server, $title, $siteurl){
foreach($server as $value){
//送信先サーバURLをホスト名とパス名に分解する
$value = rtrim($value);
$arr = parse_url($value);
$host = $arr["host"];
$path = $arr["path"];

echo($host);
echo"<br />";

//送信先サーバをオープンする
if($sock = @fsockopen($host, 80, $errno, $errstr, 20)){

//送信データをつくる
$title = urlencode($title);
$siteurl = urlencode($siteurl);

$params = "<?xml version=\"1.0\" ?>\r\n";
$params .= "<methodCall>\r\n";
$params .= "<methodName>weblogUpdates.ping</methodName>\r\n";
$params .= "<params>\r\n";
$params .= "<param>\r\n";
$params .= "<value>$title</value>\r\n";
$params .= "</param>\r\n";
$params .= "<param>\r\n";
$params .= "<value>$siteurl</value>\r\n";
$params .= "</param>\r\n";
$params .= "</params>\r\n";
$params .= "</methodCall>\r\n";

//送信する
fputs($sock, "POST ".$path." HTTP/1.0\r\n");
fputs($sock, "Host: $host\r\n");
fputs($sock, "Content-type: text/xml\r\n");
fputs($sock, "Content-length: ".strlen($param)."\r\n");
fputs($sock, "User-Agent: MSIE7.0\r\n");
fputs($sock, "Connection: Close\r\n");
fputs($sock, "\r\n");
fputs($sock, "$param\r\n");

//リターンを受け取る
$res = "";
while (!feof($sock)){
$res .= fgetc($sock);
}
fclose($sock);

//リターンからエラーコードを解釈する
preg_match("/(\<\?xml)(.*)(\<\/methodResponse\>)/s", $res, $arr);
$res = preg_replace("/UTF-8/i", "utf-8", $arr[0]);

echo $res."<br />";

}
}
}


すると下記のようなエラーが出ます。

blog.goo.ne.jp
faultString parse error. not well formed. error occurred at line 1, column 1, byte index 0 faultCode -32700

api.my.yahoo.co.jp

ping.bloggers.jp
faultCode 105 faultString XML error: Invalid document end at line 1, column 1

rpc.technorati.jp

rpc.weblogs.com
messageCan't accept the ping because the URL must begin with http:// or https://.legalYou agree that use of the Weblogs.com ping service is governed by the Terms of Use found at www.weblogs.com.flerror1

ping.fc2.com
faultCode 1 faultString The method you requested, '', was not found.

blogsearch.google.co.jp
flerror1 messageUnable to parse XML-RPC request.


よろしくお願いいたします。

A 回答 (1件)

まさか…



fputs($sock, "$param\r\n");
$paramって変数なんか存在しないじゃん、ってマヌケなオチ?
    • good
    • 0
この回答へのお礼

無念ながら、、、そのようなマヌケなオチでした。。。
素晴らしいご指摘ありがとうございます。

ちなみに$titleと$siteurlをurlencodeしない方がエラーがなく、
goo.ne.jpのみはurlencodeが必要なようでした。

お礼日時:2011/12/17 20:29

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!