いろいろ復習しる。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/><title></title>
<script src="js/jquery.js"></script>
<script src="js/jquery-ui.js"></script>
<script src="mashtwitt.js"></script>
</head>
<body>
<h1>復習</h1>
<p>
1.phpのcurlにてtwitterのxmlを持ってくる
2.jsにてphpと非同期通信
3.jsにてxmlをパースしてつっこみ
4.jsにてクリックイベント
5.ループ
</p>
<input type="text" name="id" value="twitterid" id="ids" />
<input type="password" name="pass" value="twitterpass" id="passs" />
<input type="button" id="bbg" value="開始"/><span id="result"></span>
<hr>
<ol id="aaa"></ol>
<hr>
<p class="noindent">リンクはご自由にどうぞ。
</p><p class="noindent">
<!-- hhmts start -->
Last modified: Fri Aug 14 13:41:38 +0900 2009
<!-- hhmts end -->
</body>
</html>

こうなって

//ajaxしましょうそうしましょう
function loadXML() {
  var url = "http://twitter.com/statuses/friends_timeline.xml";
  $("#result").text("Loading");
  $.ajax({
    type: "get",
    data: {
      "url":url,
      "id":$("#ids").val(),
      "pass":$("#passs").val()
    },
    url: "ajax.php",
    success: function (data) {
    $("#result").empty();
    if (data=="fail") {
      // エラー時の処理
      $("#result").text("“fail...");
    } else {
      // 通常時の処理
      alert(data);
      $("#result").text("OK!");
      parseXML(data);
    }
    }
  });
}

//名ばかりのXML文字列をhtmlにするだけのもの
function parseXML(str){
  $("#aaa").empty();
  $(str).find("status").each(function(){
         var name =  $(this).find("user").find("screen_name").text() ;
         var txts =  $(this).find("text").text() ;
         $("#aaa").append("<li><span style='font-size:20px;'>" + name +"</span><br/><span color=green>" + txts + "</span>" + "</li>");
           });
}

//イベント登録
$(function(){
$("#bbg")
      .click(function(){
               $("input").attr({disabled:"disabled"});//インプットを止める
           	   var interval = 600000;
               loadXML();
	           setInterval(function(){
                             loadXML();
               }, interval);
               return false;//デフォルト動作をキャンセル
});
});

こうなって

<?php
$id   = null;
$pass = null;
$url  = null;

//パラメータ読み込み
if ($_GET{'url'}) {
  $url = urldecode($_GET{'url'});
} else {
  $url = urldecode($_POST{'url'});
}
if ($_GET{'id'}) {
  $id = urldecode($_GET{'id'});
} else {
  $id = urldecode($_POST{'id'});
}
if ($_GET{'pass'}) {
  $pass = urldecode($_GET{'pass'});
} else {
  $pass = urldecode($_POST{'pass'});
}

//処理メイン
if( is_ok_continue($url) ) {
    $strhtml = null;
    if($id!=null){
        //basic認証モードつきでcurl
        $ch = curl_init();
        curl_setopt($ch,CURLOPT_URL,$url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch,CURLOPT_USERPWD,$id.":".$pass);
        curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
        $strhtml=curl_exec($ch);
        curl_close($ch);
    }else{
        $strhtml = file_get_contents($url, FALSE, NULL, 0, 10000);
    }
    
    if($strhtml != null){
        //        echo mb_convert_encoding($strhtml,"UTF-8","auto");
        out($strhtml);
    }else{
        out("fail");
    }
} else {
    out("fail");
}

//チェック
function is_ok_continue($text) {
    //ここでこれ以降処理していいのかを判断しませう。
    //正しいuriか、とか、呼び出し元は想定範囲内か、とか。
    if($text!=null){
        return true;
    }else{
        return false;
    }
}
//出力
function out($msg){
    //なんかスゴイ出力のための処理
    echo $msg;
}

?>

こうなった。うごくといいですね。