PHP・MySQL

Blowfishで復号化したデータ末尾にゴミがついた場合

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

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

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

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

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

$data = rtrim($data,'¥0');

OpenPNEで日記コメントにメンバーのプロフィール画像を表示したい時

日記のコメントリストを取得するクラス・ライブラリを修正してメンバーのプロフィール画像も一緒に取得するようにする。

修正するのは以下のファイル
/OpenPNE/webapp/lib/db/diary.php

【修正前】
/**
 * 日記へのコメントリストを取得
 */
function k_p_fh_diary_c_diary_comment_list4c_diary_id($c_diary_id, $page_size, $page, $desc = true)
{
    $sql = ‘SELECT * FROM c_diary_comment WHERE c_diary_id = ? ORDER BY r_datetime’;
    if ($desc) {
        $sql .= ‘ DESC’;
    }
    $params = array(intval($c_diary_id));
    $c_diary_comment_list = db_get_all_page($sql, $page, $page_size, $params);

    foreach ($c_diary_comment_list as $key => $value) {
        $c_member = db_member_c_member4c_member_id_LIGHT($value[‘c_member_id’]);
        $c_diary_comment_list[$key][‘nickname’] = $c_member[‘nickname’];
    }

    $sql = ‘SELECT COUNT(c_diary_comment_id) FROM c_diary_comment WHERE c_diary_id = ?’;
    $params = array(intval($c_diary_id));
    $total_num = db_get_one($sql, $params);

    if ($total_num > 0) {
        $total_page_num =  ceil($total_num / $page_size);
        if ($page >= $total_page_num) {
            $next = false;
        } else {
            $next = true;
        }
        if ($page <= 1) {
            $prev = false;
        } else {
            $prev = true;
        }
    }
    return array($c_diary_comment_list, $prev, $next, $total_num, $total_page_num);
}

【修正後】
/**
 * 日記へのコメントリストを取得
 */
function k_p_fh_diary_c_diary_comment_list4c_diary_id($c_diary_id, $page_size, $page, $desc = true)
{
    $sql = ‘SELECT * FROM c_diary_comment WHERE c_diary_id = ? ORDER BY r_datetime’;
    if ($desc) {
        $sql .= ‘ DESC’;
    }
    $params = array(intval($c_diary_id));
    $c_diary_comment_list = db_get_all_page($sql, $page, $page_size, $params);

    foreach ($c_diary_comment_list as $key => $value) {
        $c_member = db_member_c_member4c_member_id_LIGHT($value[‘c_member_id’]);
        $c_diary_comment_list[$key][‘nickname’] = $c_member[‘nickname’];
        $c_diary_comment_list[$key][‘image_filename’] = $c_member[‘image_filename’];
    }

    $sql = ‘SELECT COUNT(c_diary_comment_id) FROM c_diary_comment WHERE c_diary_id = ?’;
    $params = array(intval($c_diary_id));
    $total_num = db_get_one($sql, $params);

    if ($total_num > 0) {
        $total_page_num =  ceil($total_num / $page_size);
        if ($page >= $total_page_num) {
            $next = false;
        } else {
            $next = true;
        }
        if ($page <= 1) {
            $prev = false;
        } else {
            $prev = true;
        }
    }
    return array($c_diary_comment_list, $prev, $next, $total_num, $total_page_num);
}

これで$item.image_filenameのような形でメイン画像のファイル名が取得出来るようになる。

なお、変更・修正する場合は自己責任で。

オープンソースのブログ・CMSプログラム『PivotX』はマルチブログに最適

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

pivotxのスパム対策(基礎編)

pivotx001.gif

オープンソースのブログシステムpivotxにデフォルトでセットされているskinny themeを使用した場合、投稿した記事のニックネーム(nickname)にメールアドレスがリンクされ(mailto:)表示される。

そのため、デフォルトのままではスパマーのクローラーに拾われてスパムを増やす結果となる。

pivotxを利用した場合に考えられるスパムメールを回避してスパム対策のためにアドレスへのリンクを消す方法

pivotxのタグの基本として、テンプレートにある[[ user field=emailtonick ]]が、ニックネームとそのメールアドレスへのmailtoをセットしたリンクに置き換わる。

スパム対策として、この部分を変更するのだが、[[ user field=nick ]]ではエラーになる。

また、[[ user field=author ]] [[ user field=name ]] [[ user field=user]]とすると、ログイン用のIDが表示されてしまうので注意。

skinny.themeの場合に[[ user field=emailtonick ]]が含まれるテンプレートファイルは以下の4ファイル

page_template.html

entry_template.html

frontpage_template.html

archivepage_template.html

このすべてのファイル内にある

[[ user field=emailtonick ]]

[[ user field=nickname ]]

とすることで、メールアドレスへのリンクが消え、ニックネームのみが表示されるようになる。


オープンソースのブログシステム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対応サイトの作り方(その3)

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

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

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

$hua = $_SERVER[“HTTP_USER_AGENT”];

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

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

}


concrete5(コンクリートファイブ)にお薦めのレンタルサーバーはこれ

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(コンクリートファイブ)のインストール方法と注意するポイント

■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分とかからないはず。

次回は、設定について。

concrete5(コンクリートファイブ)はオープンソースで、最強のホームページ制作運用ソフト

オープンソースが大流行りだが、そういった中で、今後話題の中心になりそうなのが、concrete5(コンクリートファイブ)というCMS。分類としてはブログ用システムではなくホームページ制作運用ソフトとなる。他のソフトとは全く違う使い方、Ajaxをふんだんに使い洗練されたスタイルが特徴とも言える。

■ concrete5(コンクリートファイブ)について

代表的なCMS系のオープンソースといえば、よく知られているものに限定しても、WordPress、Xoops、Joomla!、Drupal、EC-CUBE、OsCommerce、Zen Cart、Movable Type OS、Open PNE、と様々なものが存在している。「concrete5」というこれほど優れたソフトが今まで知られていなかったのには大きな理由があった。

それは価格。

concrete5(コンクリートファイブ)は2008年6月にオープンソース化され誰でも無料で使えるようになったが、それ以前は約130万円という金額で販売されていたソフトウェアだった。
高機能で洗練されている理由もそこにある。

無料になったとは言っても、そんな高機能なソフトである以上、膨大なファイルと高度なセットアップ技術や専門的知識がいるのだろうか。

答えは No。

圧縮されたconcrete5のファイル群は8MBも無い。
さらに、インストールに関してはいくつかのお約束が存在するが、それさえ済ませてあれば、インストールはあっけないほど簡単。

ダウンロードを含めても30分足らずで下のようなサイトがスタートできる。

Digital Gate :: concrete5
http://concrete.digital-gate.com/

これから、順を追ってconcrete5の入手からインストール、セットアップ、改造、concrete5用テンプレートの作成を掲載していく予定。

iPhone オーナーのためのiPhone対応無料レンタルブログ『OwnersStyle』を開始しました

ownersblogs.png
iPhoneオーナーのためのサービス『OwnersStyle』(βver.)を開始しました。
『OwnersStyle』は、iPhoneに対応したホームページを持ちたいiPhoneオーナーのための無料ブログサービスです。(PCからの閲覧にも対応)
iPhoneオーナー限定のため、ユーザーアカウントを登録できるメールアドレスはi.softbank.jpに限定しています。
iPhone用のテーマは自動的に設定され、PC用のテーマも複数の中から選んで変更することもできます。
iPhone オーナーのための無料レンタルブログ
Weblog for iPhone Owners