読者です 読者をやめる 読者になる 読者になる

dari88's diary

これから趣味にするプログラミング/PHP/javascript/kohana/CMS/web design/

CMS

kohanaPressを無料レンタルサーバーで動かしてみました

kohanaPress を @pages という無料レンタルサーバーで動かしてみました。このチャレンジは実に面白かったし、勉強になりました。このサイトは PHP がセーフモードであるという難点がありますが、そもそも PHP と MySQL が使えるし、Imagick を介して ImageMa…

kohanaのテスト12はそろそろ終わり

kohana 3.2 のサンプルコードの提供を目的に kohana で作る WordPress の日記を書いてきましたが、そろそろ終わりです。kohana 入門用のサンプルコードとしては必要十分じゃないかと感じています。これ以上 WordPress を作りこんでもしょうがないし、出来る…

kohanaのテスト12-21・・・kohanaをレンタルサーバーで動かしてみる

初めてレンタルサーバーを使ってみました。Heteml というレンタルサーバのお試し期間2週間だけです。で、メモです。 ・自分用のサーバーをお借りするのはネットで必要事項を書いて送信するだけ。自動的にサーバーが設定されます。 ・必要なファイルを FFFTP…

kohanaのテスト13-2・・・ヤマレコ ビューワーに ThickBox を使ってみる

5日の日記で作成した ヤマレコ ビューワーはちょっと見た目が冴えないので、格好よくすることにしました。今回のコードの目玉は、ThickBox のメソッドをこちらから能動的に使いに行っている点です。このような使い方のサンプルコードは滅多に無いんじゃない…

kohanaのテスト12-20・・・DoS攻撃対策をする

自分で連続投稿のコードを動かしてみると DoS攻撃対策の必要性を痛感します。何せハードディスクが唸りを上げて連続動作しています。これでは他のユーザーはサイトが壊れたように見えるでしょうね。ということで、対策です。 DoS攻撃対策を考える ユーザー側…

kohanaのテスト12-19・・・記事を1万件投稿してもレスポンスは良好でした

WordPress 改 kohanaPress もだいぶまともになってきたので、記事を1万件投稿してレスポンスを確認してみました。結論から言うと、1万件くらいではレスポンスの差を感じません。ページネーターには ZendFramework を使っていますが、これのデータベースア…

kohanaのテスト12-18・・・投稿の一時保管、再編集、削除など機能を拡充しました

kohana の WordPress 化計画を進めています。しばらく放っておいた記事投稿関係の機能をまともにしてみました。全体的には写真の投稿関係で作ったコードをコピーして記事投稿用に書き換えるだけですから簡単です。新規性があるのは記事の再編集とか、一時保…

kohanaのテスト13・・・ヤマレコビューワーを作ってみた

ヤマレコは登山愛好家のコミュニティーサイトです。今日はヤマレコに蓄積された膨大な写真を全くランダムに選択して表示するコードです。 ヤマレコビューワー ・kohana/application/classes/controller/test13.php

kohanaのテスト12-17・・・ページネーションを改善する

github を見ていたら、Kohana 3.2 Pagination なるリポジトリを見つけました。早速 NetBeans でクローンを作って検討してみました。結論としては使えません。これは未完成ですね。生成する URL が index を含んでいて気に入りません。各メソッドも作者の意図…

kohanaのテスト12-16・・・写真の削除機能を追加する

kohana の WordPress 化計画も先が見えてきたような感じがします。今日は写真の削除機能を追加します。成果物のコードは随時 github のリポジトリを更新していますので、そちらを参照して下さい。 写真の削除機能を追加する このあたりのロジックはもう出来…

kohanaのテスト12-15・・・写真の表示にThickBoxを応用する

WordPress ではごく一部に jQuery プラグインの ThickBox を使っています。せっかくなので、写真の表示に応用してみました。で、これが結構苦戦しました。ネットで調べると使い方はえらく簡単なはず。問題は次の2点でした。 ・文字化け画面が出るばかり。 ・…

kohanaのテスト12-14・・・画像出力のHTTPヘッダーを正しいマナーにする

27日の日記にて作成した、データベースに保存した画像データを出力するコードに気になる点がありました。新しいウインドウに画像のみを出力すると、文字化け画面になります。実際にどういう HTTP ヘッダーが流れているのか調査するために、firefox のプラグ…

kohanaのテスト12-13・・・XSS攻撃対策に HTML Purifier を導入する

TinyMCE はテキストモードで編集すると HTML エスケープしてくれるので、問題ありませんが、HTML モードですと <script > タグなんかそのまんまポストしてしまいます。また、ブラウザの jabascript を使わない設定にすれば、テキストボックスがダイレクトに現れるわけ…

kohanaのテスト12-12・・・投稿ページに本家版TinyMCEを使う

昨日気付いたんですが、新規投稿ページで書いた内容と投稿結果の印象が違います。テキストボックスでの改行が反映されません。本来は<br/>や<p></p>が付かなければいけないのに、付いていません。 調べてみると、WordPress では TinyMCE 以外に PHP のコードが編集に関わ</br/>…

kohanaのテスト12-11・・・写真の一覧表示機能を作る

今日のお題は写真の一覧表示機能です。データベースにバイナリで保存した写真をどうやって見せるのか?って所が面白いです。 一覧表示用のビュー これはトップページの記事の一覧表示と同じ流れで作れます。サンプルコードは長くなるので、github に置いてあ…

kohanaのテスト12-10・・・写真のアップロード機能を作る

kohana の WordPress 化計画で kohana のテストを進めています。今日のお題は写真のアップロード機能です。アップロードには jQuery プラグインの Uploadify を使います。アップロードした写真の処理には ImageMagick を使います。WordPress は写真をフォル…

kohanaのテスト12・・・画像データをデータベースに保管する

kohana のテスト12の続きで、画像データのアップロードを検討しています。WordPress のコードを読んでみると極めて複雑な処理になっていて、読むのがいやになりました。たかだかファイルをアップロードして、チェックして、サムネールを作って、情報をデータ…

kohanaのテスト12をGitHubに登録してみました

GitHub って何? って感じなんですけど、プログラミングの世界では使われているようなので、テスト12を登録してみました。GitHubのガイダンスを読みながら、余計な部分は直感的にパスして試行錯誤したら登録できちゃいました。ということで、あやふやな手順…

kohanaのWordPress化キットV1.0を配布します・・・kohanaの入門用に最適でしょうか?

この一週間ほど勉強のために kohana の WordPress 化に取り組んでみました。結果として基本的なブログ機能だけですが WordPress の移植に成功しています。kohana は適当なサンプルコードが殆ど配布されていないので、入門者用に WordPress 化キットを配布す…

kohanaのテスト12-7・・・エラーメッセージを改善する

ユーザー登録ページのエラーメッセージが気に入らないので改善しました。'not_empty' チェックの第二引数を指定してやるとエラーメッセージを自在に表現できるようです。 コントローラの修正 ・kohana/application/classes/controller/test12/register.php …

kohanaのテスト12-6・・・WordPressのログインページを書く

今日はログインページとログアウトページを書きます。また、トップページはログインするとアドミンバー(画面上部に現れる灰色のメニューバー)が出てくるので、この仕様を追加します。 Auth の定義ファイルを書き換える 昨日作った Auth ドライバに対応して…

kohanaのテスト12-5・・・WordPressのユーザー登録ページを書く

新規投稿のページを書く前に、ユーザー登録とログインのページを書いておく必要があります。今日はユーザー登録のページを書きます。 WordPressの データベースを kohana に移す phpMyAdmin を使って、WordPress のデータベースを kohana のデータベースにコ…

kohanaのテスト12-4・・・kohanaのWordPress化計画進行中

今日は WordPress の新規投稿ページを kohana で再現する作業に取り組んでいます。Javascript や Ajax の技術をふんだんに使っており、結構ハードルが高いです。 先ずは新規投稿ページのソースコードを取り込んで、kohana で表示させます。次に、WordPress …

kohanaのテスト12-3・・・スタイルシートやスクリプトのオートローダーを作る

WordPress の HTML を見ると、スタイルシートやスクリプトをオートローダーを使ってリンクしています。WordPress を kohana に移植するために今回は kohana 用のオートローダーを作りました。 オートローダーを使うと、沢山のスクリプトをロードさせる場合に…

続 kohanaのテスト12・・・WordPress風画面に動的コンテンツを挿入する

次はメインのコンテンツ部分に動的なコンテンツを表示してみます。動的コンテンツとしてはテスト9 で作成したページネーション付きの名簿表示画面を流用します。 準備 何でもかんでも controller フォルダに置くのは違和感があります。http:// で直接アクセ…

kohanaのテスト12・・・WordPressの画面を再現してみる

kohana でコミュニティサイト系サイトを構築する基本的な要素が揃ったので、画面構成の勉強を進めています。教材としては WordPress を使い、kohana 上で WordPress を再現してみる方針です。 先ずは WordPress の最初の画面を再現します。手順の概要は次の…

kohanaのテスト11・・・Authでユーザー認証機構を作る

今日はユーザー認証機構を作りました。セッションを利用しただけの認証機構ですが、いろいろ試してみるとセキュリティー面での問題はあまり感じませんでした。ハッカーならブレーク出来るんですかね? 今日までの勉強でコミュニティサイトを構築するために最…

kohanaのテスト10・・・クッキーとセッションを使う

コミュニティサイトを作るとなると、クッキー、セッション、ユーザー認証をちゃんと勉強しなくてはいけません。今日はクッキーとセッションを試してみたのでメモを残します。 kohanaの設定 ・クッキーの基本設定はブートストラップに書いておきます。・htdoc…

kohanaのテスト9・・・Zendフレームワークのページネーションを利用する

懸案だったページネーションについては、ZF(Zend FrameWork)のページネーター Zend_Paginator を利用することにしました。ZF のリファレンスガイドを読むと、Zend_View や Zend_Db とセットで使うと良いように書いてあります。しかし、kohana を基盤にして…

kohanaのテスト8・・・WYSIWYGエディタTinyMCEを試す

WordPress や Joomla がどんなものなのか構造を勉強しています。WordPress って非常に良く出来ていますね。分かりやすいし、雰囲気も良い感じ。なんだか HatenaBlog の雰囲気と似ている気がします。 データベースの構成とか大変参考になります。しかし、テン…

コミュニティーサイト系CMSの検討・・・JoomlaとWordPressを導入してみる

pimcore のドキュメントにひと通り目を通してみました。サンプルコードなんかもふんだんに掲載されており、よく出来ていると思います。で、分かったんですけど、pimcore は静的なサイトを簡単に構築するのに向いているということです。一般企業などが会社紹…

kohana+ZFでもやってられない?・・・pimcore 超リッチなCMSを試してみる

GW初日から尾瀬に行って気分をリフレッシュしてきました。 さて、今日のお題は pimcore です。kohana は非常にシンプルなので、CMS の入門用勉強素材として大変良いのですが、サイトを作るとなると機能が貧弱なので大変だと思います。kohana に ZF(Zend Fra…

kohanaのテスト7・・・Zend Frameworkでkohanaの機能を拡張する

kohana はシンプルなだけに、アプリケーションに近い部分の機能は貧弱です。今日は高名な Zend Framework を kohana と合体させて Zend Mail を使ってみます。オートローディング機能を持つ CMS なら何でも合体して機能拡張できるみたいです。 準備作業 ・Ze…

kohanaのテスト6・・・Formの入力をValidationで検証する

テスト5まではフォームからのユーザーの入力を検証していませんでした。今日はkohana の Validation を使って検証する実習です。入力フォームも kohana の Form を使います。元ネタのサンプルコードは kohana ユーザーガイドのものです。このサンプルコード…

kohana データベースのまとめ・・・セキュリティほか

今日は kohana のデータベース操作についてちょっとまとめます。 SQLインジェクション対策 テスト4のサンプルコードで使った DB::query を使う記述法の場合、SQL文に変数を埋め込む形で kohana に渡すとエスケープしてくれません。kohana はテキストで渡され…

kohanaのテスト5・・・DBを操作する第2の書き方

今夜のお題は DB 操作の第2の書き方です。テスト4では DB::query を使って SQL文を直接書く方法を使いました。テスト5では Query Builder を使う方法です。Query Builderには DB::select、DB::insert、DB::update、DB::delete などがあります。テスト5の機能…

kohanaのテスト4の続き・・・XSS攻撃に対する穴が空いていた

昨日のテスト4のサンプルコードなんですが、SQLインジェクション対策がちゃんと出来たので満足していたら、何と XSS(Cross-Site Scripting)攻撃に対する脆弱性が存在しました。ユーザの入力値 $_POST に対しては test3post.php で htmlspecialchars() 関数…

kohanaのテスト4・・・データベース操作の新しい書き方

kohana のユーザーガイドを読んでいると、kohana 3.x 以降ではデータベース操作に対してテスト3とは違う方法を推奨しているようです。セキュリティー対策、柔軟な操作を目的に改善されているようです。 2通りの書き方があるようですが、本日夜の部では第1の…

kohanaのテスト3の続き・・・SQLインジェクション対策について

本日午前中のサンプルコードにて名前の欄に「名前 ' -- 」と書いて送信すると見事にエラーが発生しました。SQLインジェクション対策がなされていません。Database クラスには SQLインジェクション対策のメソッドが準備されているようですが、Model_Database …

kohanaのテスト3・・・指示に従ってデータベースを操作する

今日は kohana のテスト2を拡張してユーザーの指示に従ってデータベースを操作するサンプルコードを作ってみました。kohana のユーザーガイドも結構舌足らずな所が多いんですけど、山勘でこんなんで動くんじゃないの?と類推しながら書いてみたら、動いちゃ…

kohanaのエラーメッセージは素晴らしい!・・・PHPのスコープ定義演算子を使ってみる

PHP のコードを読んでいると Model_Test2::getData2() みたいにクラス名とメソッド名を (::) で連結した記述を見かけます。これって何なんだ?と調べようとすると結構大変です。PHP :: なんて書いてネットで検索しても見付からないし、PHP のマニュアルを ::…

kohanaのテスト2の続き・・・PHPで直接データベースを操作してみる

PHPで直接データベースを操作するコードを書いても kohana は動くんだろうか?・・・と思って書いてみたら、ちゃんと動きました。当たり前か?・・・(^^;;; <手順>・application/classes/model/test2 にメソッド getData2() を追加した。

kohanaのテスト2・・・データベースを読む練習

kohana のテストその2はデータベースの読み込みです。この例題では CMS(Content Management System)のコンセプトである MVC(Model View Controller)をひと通り使っています。また、ビューにビューを入れ子にしている点も見て下さい。コードを読んでいく…

kohana のテスト・・・はじめの一歩

前回作成した kohana 3.2 ユーザーガイドの pdf 版を印刷して読んでいます。で、気付いたんですが、18日の日記に書いたサンプルコードはちょっと古い書き方だったみたいです。 ということで、kohana 3.2 らしいはじめの一歩のサンプルコードです。 applicati…

kohana のマニュアルは完璧だ!・・・kohana のPDF版マニュアルを作りました

今日は kohana の PDF 版マニュアルを作ってみました。kohana 3.2 User Guide と kohana 3.2 Available Classes Reference Manual です。ユーザーガイドの方は181ページ、クラスのリファレンスは1799ページもあります。紙に印刷して一気に読みたいとか、メモ…

kohana の勉強を始めました・・・先ずはインストールから

kohana って小花ですかね?・・・ネーミングが気に入ってます。で、先程から立ち上げていました。今日は kohana のインストール手順と簡単な動作確認までです。 <インストール手順>・kohana のサイトから kohana-3.2.0.zip をゲットする。・解凍したファイ…