// シンプルな投稿方法
// Andrus (andrus@vnet.ee) によるバージョン 1.0
// 免責事項:
// 誰でも好きな場所でこのコードを変更または使用できます ;)
// 注意! Microsoft プラットフォーム Web サーバーに投稿するには、改行 "n" を "rn" に変更する必要がある場合があります
// Microsoft は常に標準を破っています...
// "ブラウザ" ヘッダーを送信します
function send_headers ($fp) {
fputs ( $fp, "Accept: */*n");
fputs ($fp, "Accept-Language: enn");
fputs ($fp, "接続: Keep-Aliven");
fputs ($fp, "ユーザーエージェント: Mozilla/4.0 (互換性; MSIE 5.5; Windows 98)n");
}
// データを投稿して返信を返す
function post_data ($host, $url, $data) {
$fp = @ fsockopen ($host, 80, $errno, $errstr, 120);
$ret = "";
if (strncasecmp ($url, "http://", 7) == 0) $url = substr ($ url, 7);
$p = strpos ($url, '/');
if (空 ($p)) {
$req = "/";
} else {
$req = substr ($url, $p);
}
if ($fp) {
fputs ($fp, "POST $req HTTP/1.0n");
send_headers ($fp);
fputs ( $fp, "コンテンツタイプ: application/ x-www-form-urlencodedn");
$out = "";
while (list ($k, $v) = each ($data)) {
if(strlen($out) != 0) $out .= "&";
$out .= rawurlencode($k)。 "= .rawurlencode($v);
}
$out =rim ($out);
fputs ($fp, "Content-length: ".strlen($out)."nn");
fputs ($fp, "$out");
fputs ($fp, "n");
while(!feof($fp)){
$ret .= fgets($fp,1) 28);
fclose ($fp);
}
return $ret;
}
// 使用方法の例:
// 次のコードは、変数 "login" と "pass" をサーバー "www.something.com" に送信します。 " script "/submit.php"
$reply = post_data ("www.something.com", "/submit.php", array ("login" => $username, "pass" => $password)) ;