PHP

  • mixhostに作ったサイトでPHP の date() で日時を取得したら日本の時刻と違っていた。
    mixhostでタイムゾーンを日本にする方法は簡単。
    「.htaccsess」に以下を記載してアップロードする

    php_value date.timezone Asia/Tokyo

    これでタイムゾーンが日本になり、日時のずれは解消する。

  • 日時データ(2014-05-01 23:59:59)をTwitterなどで使われている「○秒前」「○分後」「○時間前」「○日前」のような表記に変換するには、以下のスクリプトを使う。
    (さらに…)

  • TwitterのAPIは一定時間内での利用回数が制限されている。(例:1時間あたり150リクエストまで)
    そのためTwitterではあと何回APIの実行が可能かを取得するためのAPIも用意されており、TwitterのAPI制限状況を取得したい場合、以下のURLにアクセスすることで残りのAPI呼出可能回数およびリセットされる時間が分かる。

    http://twitter.com/account/rate_limit_status.xml

    $xml = @simplexml_load_file(“http://twitter.com/account/rate_limit_status.xml”);

    上記のようにsimplexml_load_fileを使うと、1時間当たりの上限リクエスト数、リセットされる時間や、TwitterのAPI制限に達するまでに利用できるAPIリクエスト数が返ってくる。

    SimpleXMLElement Object
    (
        [hourly-limit] => 150
        [reset-time-in-seconds] => 1317191935
        [reset-time] => 2011-09-28T06:38:55+00:00
        [remaining-hits] => 148
    )

    そこで、

    $limit = $xml->remaining-hits;
    $hourly = $xml->hourly-limit;

    のようにして、制限に達するまでに利用できるAPIリクエスト数、1時間当たりの上限リクエスト数を取得しようと考えるが、この方法ではうまくいかない。
    理由は簡単。返されてきたxmlの各データ[hourly-limit]、[reset-time-in-seconds]、[reset-time]、[remaining-hits]にハイフン「-」が含まれているのが原因。
    xmlのキーにハイフンが含まれていた場合は、以下のように記述すると成功する。

    $limit = $limit_status->{‘remaining-hits’};
    $hourly = $limit_status->{‘hourly-limit’};

    xmlのデータを処理していて、xmlの取得は成功しているのに、データとしてうまく取り出せない場合にも同様のケースがあることがある。

  • Blowfishは、md5とは違い、可逆暗号化なので、暗号化して保存後、暗号化前のデータを使いたい時に使えて便利。
    使い方としては、暗号化したいデータをBlowfishで暗号化

    $crypt_data = $blowfish->encrypt($data);

    base64_encodeでバイナリからテキストにしてデータベース他に保存
    必要に応じて取り出したデータをBlowfishで復号化して使用。

    $data = $blowfish->decrypt($crypt_data);

    基本的にはこのステップだが、実際には復号化したデータの末尾にヌルコードのゴミ(€¥0)が残る時があるから、rtrimをかけておくとよい。

    $data = rtrim($data,'¥0');
  • PivotXとは
    PivotXとは、PHPとMySQLで構築可能なオープンソース・ソフトウェアのブログ用CMSプログラムで、Ajaxを使い洗練された管理画面が特徴。
    PivotXの特徴としてマルチブログ(複数ブログ)やマルチユーザー(複数ユーザー)での構築が簡単に出来ることや、データベース(DB)としてMySQLを使う以外に、データベースを使わないCMSシステムとしても構築が可能なため、安価なレンタルサーバーやホスティング利用等でデータベースが使えない場合でも導入可能なところが便利。
    また、PivotXはデータベースの構造もシンプル。以前、WordPress mu を使いマルチブログを構築したことがあったが、ブログ数が増えるとMySQL内に膨大な数のテーブルが作られるため、データベースが一個しか与えられないレンタルサーバーで他のプログラムと混在させると管理が面倒になったりする一面があった。その点PivotXは少ないテーブル数でマルチブログを実現できるPivotXは手軽にインストール(構築・導入)しやすい。

  • PivotXで生成されるファイルには、HTMLソース上の二ヵ所に、PivotXバージョン表記がある。
    セキュリティを考えるとシステムのバージョンは掲載しない方が安全。

    テンプレートファイルを修正して、バージョンを表示しないようにする方法。

    実際にバージョンを呼び出している部分は以下。

    ベージ下部に表示されているバージョンは下記のテンプレートファイルにある。

    /pivotx/pivotx/templates/skinny/_sub_footer.html

    _sub_footer.html内の

        <div id=”footer”>
            <p><a href=”#top”>[[t]]Top[[/t]]</a> | [[sitename]] is powered by <a href=”http://pivotx.net/”>[[ $build ]]</a></p>
        </div>

        <div id=”footer”>
            <p><a href=”#top”>[[t]]Top[[/t]]</a> | [[sitename]] is powered by <a href=”http://pivotx.net/”>PivotX</a></p>
        </div>

    このようにすることで、バージョンは表示されなくなる。

    同様に、ヘッダー部分に書き込まれているバージョン表記が同じフォルダ内の「_sub_header.html」にあるかと思うが、このテンプレートファイルには記載されていない。

    ヘッダーのメタタグ部分にコメントとして書き込んでいる元になっているのは、以下のファイル。

    /pivotx/pivotx/modules/module_parser.php

    module_parser.php内の

            // Add a hook to insert the generator meta tag and possibly a favicon link
            $PIVOTX[‘extensions’]->addHook(
                ‘after_parse’,
                ‘insert_before_close_head’,
                “€t<meta name=€”generator€” content=€”PivotX€” /><!– version: ” . strip_tags($build) . ” –>€n” .
                $favicon_html
                );

            $PIVOTX[‘extensions’]->addHook(
                ‘after_parse’,
                ‘insert_before_close_head’,
                “€t<meta name=€”generator€” content=€”PivotX€” />€n” .
                $favicon_html
                );
            

    このようにすることで、ヘッダー内のバージョンは書き出されなくなる。

     

  • iPhone専用のページを用意して対応する方法

    iPhoneからのアクセスの場合、iPhone用ページにリダイレクトする

    ■構成しているページがPHPの場合(.php)

    $hua = $_SERVER[“HTTP_USER_AGENT”];

    if(ereg(“iPhone”,$hua)){

    header(“Location: http://digital-gate.com/i/”);

    }


  • OpenPNEでのSNS運用していて、日記等のフォームに新しい項目を追加したいこともあるだろう。
    しかし、OpenPNEの場合、単純にテンプレートに追加するだけでは処理されない。
    その場合は、以下のファイルを修正していくことで変更することが可能となる。

    ———————————————————————-

    まずは、表示のためのテンプレートファイル
    フォームの希望する場所(テーブル処理されている部分)に

    <tr>
    <th>項目</th>
    <td>内容</td>
    </tr>

    と追加する。

    ■変更ファイル
    templates/
    h_diary_add.tpl
    h_diary_add_confirm.tpl

    ※項目内容をデータベースから取得する場合や、フォーム内に登録者毎のデータが必要な場合は、以下のPHPファイル内で取得する

    ———————————————————————-

    テンプレート用にデータ取得等の処理が必要であれば、以下のPHPファイル内で処理し
    $this->set(‘hoge’, $hoge);
    といった形でtplに渡せばいい

    ■変更ファイル
    page/
    h_diary_add.php
    h_diary_add_confirm.php

    ———————————————————————-

    項目内での変更や選択肢の追加等の場合は上記page内とtemplates内のファイルのみで良いが、新たに項目を追加しリクエスト変数が増えた場合は、validate内で定義してやる必要がある

    ■変更ファイル
    validate/do
    h_diary_add_insert_c_diary.ini

    validate/page
    h_diary_add.ini
    h_diary_add_confirm.ini

    上記ファイル内で、欲しいデータ形式に合わせ、新たなリクエスト変数を定義する

    type
    int→整数
    string→文字列

    ———————————————————————-

    これでデータの項目表示、フォームデータの受け渡しが可能となる。
    あとは、渡されたデータをデータベースに登録するロジックを追加すればいい。

  • concrete5インストールにあたり、concrete5(コンクリートファイブ)のインストールには以下の動作環境がポイントになる。

    ■concrete5の動作環境について
    ・Apache
    ・MySQL 4.1以上
    ・PHP5以上

    上記の条件からサービス・価格からデジタルゲートお薦めするのはハッスルサーバー。月額208円〜、容量1G、メールアカウント無制限、メーリングリスト無制限、マルチドメイン、MovableType(MTOS)のインストールも簡単。
    ※CMS機能を希望するクライアントにconcrete5を使って構築した実績あり。

    また、アクセス数やサーバーレスポンスがシビアなクライアント・案件には、アイルやリンククラブをお薦め。共有サーバーから専用サーバー、サーバースペックと豊富なプランから選択が可能。

    なお、ロリポップは現在はMySQL4.0.24のためインストール不可だが、4.1にバージョンが上がれば、価格的にも魅力的。サーバー検討の際にはロリポップの仕様を一度確認することをお薦めする。

    ■デジタルゲートがお薦めする低価格レンタルサーバー&ホスティング

    ★★★
    ★★
    ブログでハッスル、メールでハッスル、ハッスルサーバー
    concrete5のインストール&稼働実績有り
     
    ★★★ アイルのホスティングサービス 5GB/945円〜
    concrete5インストール可能なプラン有り
     
    ★★★ LHXのレンタルサーバー
    concrete5インストール可能なプラン有り
     

    ★月々263円からオンラインショップを運営!
    高機能カート・クレジット決済が簡単導入

    MySQL4.0.24のためconcrete5のインストールは不可
     
  • ■concrete5の動作環境について

    ・Apache
    ・MySQL 4.1以上
    ・PHP5以上

    ※注意
    レンタルサーバーやホスティング等を利用している場合の注意点として、concrete5はPrefixに対応していないため、インストールには空のデータベースが必要。
    前回書いたようなオープンソース、WordPress、Xoops、Joomla!、Drupal、EC-CUBE、OsCommerce、Zen Cart、Movable Type OS、Open PNE、オリジナルのプログラム等を既にインストールしてしまっている場合はエラーが出てインストールできない。
    新規にデータベースを作成するか、別途レンタルすること。

    また、GDライブラリー等のライブラリが必要なので、自宅サーバー等で構築している人等は要チェック。

    SEO対策等を考える場合には、mod_rewriteに対応していることもポイントとなる。

    ■concrete5のダウンロードについて

    本家からダウンロードするのもいいが、文字化けや細かい修正が施されているUsagi Projectのサイトで提供されているconcrete5日本語版のダウンロードをお薦めする。

    http://concrete5-japan.org/
    concrete5をダウンロード

    ■concrete5のインストールについて

    空のデータベースが用意できたら、文字化け回避のために接続照合順序を「utf8_genetal_ci」にしておく。
    パーミッションの設定を事前にしてもいいが、インストール途中でチェックしてくれるので、その結果から変更していっても構わない。

    ・ダウンロードしたファイルを解凍してサーバーにアップロード。
    ・concrete5をインストールしたサーバーにアクセス。
    ・左側にチェク結果が表示されるから、不具合があれば修正、変更する。
    ・右のフォーム「サイト&管理者情報」(あとで変更可能)、「MySQLデータベース情報」を記入したら、「concrete5をインストール」ボタンをクリック。

    あとは数分でインストールが完了する。

    完了後にユーザー名とパスワードが画面に表示されるから、忘れずに書き留めること。

    トラブルがなければ、ここまで30分とかからないはず。

    次回は、設定について。