menu


2016年4月22日金曜日

phpによるping送信処理修正



前回載せた送信処理を改造しました。
なぜなら、無料レンタルサーバーでは、送信できないからです。
セキュリティーでひっかかり送信できませんでした。
送信できない処理を改造して送信可能にしました。
前回のソースと合わせれば使用可能です。
function fsend($blog_name,$blog_url,$ping_servers) { 
//url重複回避 
$ping_servers = array_unique($ping_servers); 

// weblogUpdates.pingのXMLデータ 
$content = '<?xml version="1.0" encoding="UTF-8"?>
<methodCall> 
<methodName>weblogUpdates.ping</methodName> 
<params> 
<param><value>'.$blog_name.'</value></param> 
<param><value>'.$blog_url.'</value></param> 
</params> 
</methodCall>
';
//print $content."xxxxx<br>";
 $headers = array( 
'Content-Type: application/xml',
'Content-Length: '.strlen($content)
);
$context = stream_context_create(
array(
'http'=>array( 
'method'=>'POST',
 'header'=>implode( "\r\n", $headers ), 
'content'=>$content
)
)
);
foreach($ping_servers as $ping_server){ 
$http_response_header = null; 
// print "[".$ping_server."]<br>";
$conn=curl_init();
curl_setopt($conn,CURLOPT_CONNECTTIMEOUT,2);// 試行待ち時間
curl_setopt($conn,CURLOPT_FOLLOWLOCATION,1);// Locationヘッダをたどる
curl_setopt($conn,CURLOPT_RETURNTRANSFER,1); // curl_exec() の返り値を文字列で返す
curl_setopt($conn,CURLOPT_HEADER,TRUE); // ヘッダの内容も出力 #
curl_setopt($conn,CURLOPT_USERAGENT,$context);// USER_AGENTを設定
curl_setopt($conn, CURLOPT_URL, $ping_server); // ping送信先URL
$res = curl_exec($conn);
curl_close($conn);
echo $ping_server,"...",$res,"<br>";
// $response = file_get_contents($ping_server,false,$context);
// echo $ping_server,"...",$response,"<br>"; 
};

}
問題になったのは、file_get_contents関数です。これが、phpのセキュリティーにひっかかり送信できませんでした。レンタルサーバーのため、php.iniファイルの修正もできず、探しに探して、改造しました。
これでレンタルサーバーからでもpingできます。
お試し下さい。

phpなんて使えないって方には、私のサイトをご利用下さい。
サイトとしてpingサポートサイトを作りました。もちろん無料!
登録してボタンを押すだけでping送信できます。
URLからの自動アクセス送信機能も付けました。
登録後は、URLを貼り付けて実行のみで、送信可能です。

以下pingサイトです。
MyPing

0 件のコメント:

コメントを投稿