Neo Inspiration

  • Search

    • About Me

      • inspi 改め
        jakk@webアーキテクト(自称)
        php,javascript,seoなど
        得意技は extract();

  • Categories

  • Ranking

  • Comments

  • Others


  • Archive for the ‘PHP’ Category

    Wordpressのログ取り

    水曜日, 6 月 18th, 2008

    バージョンあげる前はずっと firestats とかいうのを使っていたのですが、
    結構重いのと、DBがたくさんできて美しくなかったので、
    今は、単純にテキストファイルにアクセスログを吐き出すプログラムを作ってまわしています。

    まあ一応それを公開しますってことで。

    wp-logger

    別にwordpress以外でも使えるんだけど。
    なんとなく wp ってかいてみただけですw

    使い方

    1:ZIPファイルを解凍すると wp-logger.php なるものができるので、
     それをwordpressのフォルダ(wp-config.phpとかがあるフォルダ)にアップする

    2:wordpressの管理画面から
    テーマエディタを使って footer.php (フッター)にこのタグを貼り付けてください。

    <?php require_once(’wp-logger.php’); ?>

    以上!

    *うまくいかなかったら カキコミ権限とかいじってみてくださいまし。

    これで

    勝手に200806.log とかいう感じで月ごとのアクセスログがポンポン書き出されます。

    こんな感じのログ(カンマくぎり)です。

    日付,アクセスされたURI,IP,リモートホスト,ユーザーエージェント
    2008/06/18 12:03:22,/,192.168.0.1,****.ocn.ne.jp,Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14,

    simplexml_load_string で CDATAもとってくる

    金曜日, 6 月 6th, 2008

    最初できないと思ってたんですが、
    optionつければできるようですね。
    こんなとこに書いてありました。
    PHP5’s SimpleXML Now Passes CDATA Content

    PHP要件とか

    ただこんな要件が
    http://phpspot.net/

    導入
    以下の関数/定数は、PHP 5.1.0 以降、 DOM, SimpleXML および XSLT のような libxml に基く エクステンションのどれかをコンパイルしている場合に利用可能です。

    要件
    このエクステンションは、libxml >= 2.6.0を必要とします。

    こうやる

    これで

    $xml = simplexml_load_string($rssUrl, ‘SimpleXMLElement’, LIBXML_NOCDATA);

    echo $xml->item[0]->description;

    みたいな。

    さくらで動かしたら動いた~

    js を使わずに PHPだけで、loading メッセージを出して終わったら消す

    金曜日, 5 月 30th, 2008

    どうでもいい php tips

    こんなことがあるので

    管理画面を作っていて
    長い処理とかでブラウザのタイムアウトとかを防ぐ為に
    php だと

    echo “Now Loading…”;

    処理やってる間1ループごとに
    echo “.”;

    処理が終わってから
    echo “End.”;

    とか echo したりすると思うんですが、
    それがお客にも見せるようなものだったりする特殊な場合
    (ユーザがタイムアウトしそうな処理全部かもしれないけど)

    echo した Now Loading… が画面にずっと残っちゃってうざいね

    ってことで、 それを js を使わずに消してしまおうと。

    魔法を使って解決します

    魔法でも なんでもないんだけどw

    こうする。

    echo “<div id=’loading’>Now Loading…”;

    処理やってる間1ループごとに
    echo “.”;

    処理が終わってから
    echo “End.</div>”;

    とPHPで書いておいて
    CSS で

    #loading {
    display:none;
    }

    こう書けばOK。

    これで、処理中は …. がどんどん増えていって
    End が表示されて、
    その後PHPの残りのプログラムが処理されて、
    最後に html を生成して、display:none が当たって見えなくなるわけです。

    HTMLの読み込み時間差を利用するかんじ。

    応用するとこんなことが

    PHPとCSSだけで可能です。

    こんなこともできます。

    ちなみにこれのソースはこんなかんじ。

    <?php
    echo “<div id=’loading’ style=’width:100%;margin:0;padding:0;height:100%;text-align:center;’>\n<div style=’position:absolute;top:50%;left:50%;margin-left:-7.5em;margin-top:-1em;’>\n<div style=’width:500px;’>\n<ul id=’loading’ style=’list-style-type: none;’>\n”;

    for ($i=0;$i<10;$i++) {
    echo “<li style=’float:left;margin:0px;border:1px solid silver;background-color:cyan;color:cyan;’>|</li>\n”;
    ob_flush;
    flush;
    sleep(1);
    }

    echo “</ul>\n</div>\n</div>\n</div>”;

    ?>

    html>
    <head>
    <meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ />
    <title>ローディングテスト</title>

    <style>
    #loading {
    display:none;
    }
    </style>
    </head>

    <body>
    全部完了したらこれだけが表示されます。
    </body>
    </html>

    2008/10/13 06:23:20