phpのcurlではてなに書きこみ

 いつのまにかこれまでのスクリプトでははてなに書きこめなくなった。原因を探っていろいろと検索していて、PHPプロのメーリングリストアーカイブCURLのセッションを引き継ぐ方法というのを発見。なに、phpネイティブでこんな命令体型があるなんて知らんかった。簡単だし、返ってきた内容を利用・表示できるのがとっても便利。随分これまで無駄な苦労してしもうたがな。
 で作ったはてな書きこみスクリプトcookieの扱いってこれでいいのかようわからんけど、とりあえず動いている。

<?php

function write_hatenadiary($account , $password , $body){

//ログインしているかどうか調べる
    $ch = curl_init("http://www.hatena.ne.jp/login"); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);    
    curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie"); 
    curl_setopt($ch, CURLOPT_COOKIEFILE, "tmp"); 
    $output = curl_exec($ch); 
    curl_close($ch); 

    $output = mb_convert_encoding ( $output, "SJIS","auto");
#   echo strip_tags($output);


//ログインしていなければログイン
if(strpos($output,"&nbsp;ようこそ ".$account." さん&nbsp;")===FALSE){

    $params = array( 
        "name" => $account, 
        "password" => $password,
        "persistent"    =>  "0",
    ); 

    $fp = fopen("tmp", "w"); 
    $ch = curl_init("http://www.hatena.ne.jp/login"); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);    
    curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie"); 
    curl_setopt($ch, CURLOPT_POST, TRUE); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $params); 
    curl_setopt($ch, CURLOPT_WRITEHEADER, $fp);  $
    $output = curl_exec($ch); 
    curl_close($ch); 
    fclose($fp);

}   //ログインここまで

//rkmの取得
    $header = file_get_contents("tmp");
    ereg("Set-Cookie: rk=([^;]+); ",$header,$temp);
    $rkm=$temp[1];

//投稿
$params = array( 
    "mode"  =>  "enter",
    "dummy" =>  "1",
    "timestamp" =>  "",
    "date"  =>  "21000101",
    "year"  =>  date("Y"),
    "month" =>  date("m"),
    "day"   =>  date("d"),
    "title" =>  "",
    "body"  =>  $body,
    "rkm"   =>  $rkm,
); 

    $ch = curl_init("http://d.hatena.ne.jp/".$account."/edit"); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);    
    curl_setopt($ch, CURLOPT_POST, TRUE); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $params); 
    curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie"); 
    curl_setopt($ch, CURLOPT_COOKIEFILE, "tmp"); 
    $output = curl_exec($ch); 
    curl_close($ch); 

}
?>

 いつのまにかシンタクスハイライトなんてはてな記法ができてたんや。他のblogサービスだったらこんなことまずやらへんやろうな。


追記(修正):やっぱりcookieの扱いが間違っていた - パンクはいつも突然に