ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

phpMixiBBSコミュのプロトタイプ公開

  • mixiチェック
  • このエントリーをはてなブックマークに追加
自分もプロトタイプを作って見ましたので、公開させていただきます。

デモ
http://pharon.lolipop.jp/phpMixiBBS/main.php

ソースのダウンロード
http://pharon.lolipop.jp/phpMixiBBS/phpMixiBBS.zip

ソースは解凍後、ウェブサーバーの配下のディレクトリに移動し、
ブラウザから、
http://server_name/phpMixiBBS/main.php
にアクセスすれば初期画面が表示されます。

特徴は、一応MVCモデルとオブジェクト指向プログラミングを採用
しているところです。(ですので、たぶん機能追加などのメンテナンスが
やりやすいはずかと思います???)

全体の仕様は、手軽なスレッド式のものでデータベースは使わない
という以外はあまりはっきりとしなかったので、とりあえずはMixiと
似た操作性のものにしてみました。

データの構造は、まさにデータベース向きだったので、mysqlを使いたい
ところでしたが、なんとか堪えて封印しました。
その結果、データファイルはCSVファイルを採用しております。

私はデザインやhtmlがあまり得意ではないので、今のところMixiのパクリです。
このコミュニティにはデザインの得意な方々が多いようですので、ぜひ
操作性の良いオリジナルなデザインに置き換えていただけたらと思います。
ちなみに、
phpMixiBBS/views/thread/thread_itiran.tpl
phpMixiBBS/views/thread/thread_nyuryoku.tpl
phpMixiBBS/views/thread/thread_kakunin.tpl
phpMixiBBS/views/toukou/toukou_nyuryoku.tpl
phpMixiBBS/views/toukou/toukou_kakunin.tpl
の部分が画面のデザインに関するファイルです。
これらのファイルのphpの部分は触らずにhtmlの部分だけを差し替えて
いただければよいかと思います。よろしくお願いいたします。

その他、バグや要望など何でもかまいませんがありましたら
お知らせいただければありがたいです。

コメント(31)

それからデモには、実際に何かデータを書き込んで見ていただいても全然構いませんので、よろしくお願いします。
データファイルは全部
phpMixiBBS/bbs_datas
のディレクトリに作成するので、書き込みの権限が必要かと思います。
その他のディレクトリはたぶん読み込み権限だけで大丈夫なはずかと・・・
ご指摘ありがとうございます。サーバーにアップしてから自分で書き込みを試していませんでした。お恥ずかしい限りです。
ディレクトリに書き込み権限をつけまくりましたので(bbs_datas だけでいいはずなどといっておきながらかなり適当)、今度は大丈夫なようです。(テストに1件書き込んで見ました)
一応PharonというMVCモデルのフレームワークを使っているので、画面遷移などに関してはフレームワークに任せています。

基本的なコーディングは、それぞれの画面で何かのボタンが押されたときにどのような処理をするかを記述するというような形となっています。
surferomeさん、お疲れ様です♪
早速ダウンロードして、、、、やっと、動作を追い終えました^^;
いや、自分フレームワークは使ったことがないのでなかなか…汗

ちょっと質問なのですが、Pharonというフレームワークは、ぐぐってみましたが見つかりませんでした…。自作でしょうか?もし、参考になるようなサイトがあれば教えていただけると助かります。

それと、皆さんに補足。知ってる方も多数おられるでしょうが、アーカイブ中の「.ppr」ファイルは、PHPエディタ(http://phpspot.net/php/)で用いられているプロジェクトファイルです。ので、このソフトを使うと、ある程度、動作を追いやすくなりますよ♪
>>だふさん
使って見ていただいたとのことで、ありがとうございます。

Pharonはお察しのとおり自前のものです、最近公開させていただきました。画面遷移の多いものを作るときに効率アップしたいというのが、最初の動機でした。「前の画面に戻る」などにしてもjavaスクリプトだと不完全だったりしたので・・・

正統派のフレームワークではなく我流のものですが、自分ではいつも使っていますが、前に比べると特にメンテナンスがやり易くなっています。ちなみに正統派のフレームワークとは、phpにおいてでも、現在では仕様的にjavaのスタンダードであるstrutsの流れを汲むものであると思います。

Pharonのコミュニティを一応紹介させていただきます、もっとも残念ながら現在私一人しかいませんが・・・
もしよろしかったら覗いて見てください。
http://mixi.jp/view_community.pl?id=505395
MojaviやらAgaviやらMapleやらEthnaは使ったことあったり、実際に開発に使ったことがあるので理解しやすいのですが、更にフレームワークを弄るとなるともう限界です…(ぉ

PHPでstrutsみたいなのはPhrameとかありますけど、PHPでああいったのはちょっと使う気にはなれないかなぁといったところが個人的な意見です。

でも, フレームワークはRoRが好きかなぁ…
実は掲示板のプロタタイプを作るときに、mixiの仕様を参考にしたので、写真をアップロードする機能も当然付けたかったのですが急いでいたので、後回しにしました。

で、ちょっとそれを実現するにはどう設計すればいいかと考えて見ますと、まずはじめに phpMixiBBS/views/toukou/toukou_nyuryoku.tpl の中に写真1〜3までのテキストボックスと参照ボタンのペアーを3つ追加することになるでしょう。

画像のアップロード処理は結局確認ボタンを押したタイミングで行うことになると思うので、サーバーへの送信ボタンは増えてはいないので、コントローラーのクラスは追加する必要は無いでしょう。

phpMixiBBS/controllers/toukou/nyuryoku/cntToukouNyuryokuKakunin.class.php の中をみるとコメントになっていますが、
$mdl_toukou_nyuryoku_kakunin->xxxYyyy($item); とモデルのメソッドを呼んでいる部分がありますので、このコメントをはずして、名前もxxxYyyyではまずいので、upImage とでも変えて内容をあらわす名前にします。こんな感じですか。
$item = $mdl_toukou_nyuryoku_kakunin->upImage($item); 

そしてその実体は対応するモデルの phpMixiBBS/model/toukou/nyuryoku/mdlToukouNyuryokuKakunin.class.php の中に先ほどの upImage メソッドを作成することになります。

そのメソッドの中で実際にアップロードされた画像にとりあえずユニークになるような名前を付けて、phpMixiBBS/image とでも言う名前のディレクトリを新たに作ってその中に保存するような処理を書きます。

画像の取り込みの部分だけですが、ざっと考えるとこのような流れになるのかと思いますが、もし興味のある方が居られましたら実装してみていただけたらと思いますが・・・
>だんごねこさん
その記事はちょっと前に目を通してるので知ってます.
ちなみに, 最近はMojavi系やらMapleやら使ってるからある程度使い方わかってるのを使えばいいやと思ってます, はい.

>surferomeさん
一応, 設置者が指定する任意のファイルをアップロードできたほうがいいと思います. ちなみに卒業研究で多忙なためソースがぜんぜん弄れてません, はい.
addshashesが無駄に効いている?
XSSもありますね
でも基本的な流れはできてますね
ブラッシュアップしていけばいい感じになっていくかも?
デモを動かして見ますと、「能」とか「表」を入力すると後ろに必ず¥が勝手についてしまいます。どうもphpが自動的に付けているようです。

自分は通常windowsでphp_editorを使ってプログラムを作っているので、文字コードがsjisです。そのまま何も考えずにサーバーにアップしたため現状ではサーバー上でもsjisということになります。

これは以前話には聞いたことがある、日本語文字コードの罠に嵌ってしまっているのではないかと思います。もしそうだとすれば、コードをeucにすれば直るのかな?

近いうちにeucに変換してからサーバーにアップし直して見ようかと思っております。
Shift-JISは厄介ですからねぇ…
僕はWindowsXPでは文字化けしないUTF-8を推奨(ぉ
デモ版をeucに変更しました、その結果\は付かなくなったようです。

コードをeucに変更したら、スレッドファイルが読み込めなくなり、最初はうまくいきませんでした。もっともファイル名を漢字にしていたので、ちょっと無謀だったかなと反省いたしました。連番を作成しそれをスレッドのファイル名にするように変更を加えました。

やはり外国の人と比べると日本語はコンピュータではいろいろとハンディがあるようですね。

WhiteWingさんにご指摘いただいたUTF-8もそのうちに試して見たいとは思っております。
15: surferome さん>>
> デモを動かして見ますと、「能」とか「表」を入力すると後ろに必ず¥が勝手についてしまいます。どうもphpが自動的に付けているようです。

magic_quoteなどを調べるといいでしょう.
どこでも動くようにするなら対処しましょうね.

#たとえば「'」「"」を入れただけでもそうなります.

っで,まだ脆弱性ありますね.
>>ELF 上鍵 さん

いろいろとセキュリティに関して試していただいてありがとうございます。

サーバーのmagic_quotes_gpc は on になっておりましたので、とりあえずこのプログラムでは off にしました。
DBを使わない場合は、off にしたほうがよいという理解でよろしいのですよね。(まだ理解が浅いのかもしれませんが・・・)

それからjava-scriptなども起動できないように、htmlspecialchars関数をデータ表示時にかけるようにしました。

これでほぼ脆弱性はOKでしょうか?
19: surferome さん>>

> サーバーのmagic_quotes_gpc は on になっておりましたので、とりあえずこのプログラムでは off にしました。
> DBを使わない場合は、off にしたほうがよいという理解でよろしいのですよね。(まだ理解が浅いのかもしれませんが・・・)

広く配布の場合,理想はon/offどちらでも動作するでしょうね.

> これでほぼ脆弱性はOKでしょうか?

編集画面がまだ同様の問題があるみたいです.
がんばってくださいー
>>ELF 上鍵 さん

ご指摘ありがとうございます。

とりあえず、修正で戻ったときの編集画面でもサニタイジングするようにしてみました。
今までの修正を加えたものをアップロードします。
(現在のデモ版と同一の内容です)

ソースのダウンロード(update版)
http://pharon.lolipop.jp/phpMixiBBS_1.01.zip
http://www.geocities.jp/dennou84/design/cal-b/parts.html
の各部品を
surferomeさんのデザインと
差し替えてみようと思っております。

差し替え作業中のファイルは
http://www.geocities.jp/dennou84/design/cal-b/views.zip
に置いてあります。

間違っている箇所につきましては
ご指摘頂きたいと思っております。
そう言えば、サニタイズ言うなキャンペーンなんてのもありましたね
http://takagi-hiromitsu.jp/diary/20060115.html

完全にオフトピですが(ぉ
http://www.geocities.jp/dennou84/design/cal-b/views_1_0_1.zip
自己解決致しました。
>> vis さん

オリジナルのとてもセンスのよいデザインを作っていただきありがとうございます。

さっそく組み込ませていただき、デモ版を更新して見ましたのでご覧ください。

ちょっと触って見たところでは、新規スレッドの投稿と記事の追加はうまくいくようです。
しかし、新しいスレッドを作成したばかり、つまり件数が0件のときの記事の投稿がまだうまくいかないようです。これからちょっと調べて見ようと思っております。
(デモ版でNo 2とNo 6のスレッドがこれに該当)
その問題を修正したあとUPしたつもりだったのですが、
どうやら修正していないものをUPしていたようです。
25:のファイルに上書きしました。
http://www.geocities.jp/dennou84/design/cal-b/views_1_0_1.zip

toukou_nyuryoku.tplファイル内
<form action="<?= MYSELF ?>" method=post>
<table border="0" cellspacing="1" cellpadding="0" id="Comment">



<?php
//debug("thread_itiran",$item["thread_itiran"]);
if ($item["toukous"]) {
?>

の後に置いていたので、

投稿数がゼロの場合
フォームタグの開始部分とテーブルタグの開始部分が
表示されていませんでした。

その為に投稿が出来ず、
テーブルの表示がおかしくなっていたようです。
私も調べて見て、今気が付いたところです。
大変お騒がせしました。

ソースをサーバーにアップさせていただきます。

ソースのダウンロード(vis さんのデザイン組込み版)
http://pharon.lolipop.jp/phpMixiBBS_1.02.zip
http://www.geocities.jp/dennou84/design/cal-b/views_1_0_2.zip
surferomeさんが用意されている
投稿数、最終投稿者名を追加、
作成日時を最終投稿日時に変更、
一覧画面へのリンクをメニューの中に組み込みました。

views/base.css (perts.htmlと同じディレクトリにあるもの)は
色を変えやすくしたものになっていますが、
うまくスタイルシートが適用されないものもあるので
とりあえず置いてあるだけです。
ご意見、ご指摘をいただけると助かります。
>> vis さん
どうもありがとうございます。

さっそく新しいものを組み込ませていただき、デモとソースを更新させていただきましたのでご覧ください。
なおソースにつきましては、今回はバージョンは変更せずに 28. のものに上書きしましたので、ダウンロードはそちらからお願いします。

views/base.css (perts.htmlと同じディレクトリにあるもの)は、全体の色を一括して変えようとしているのかと思いましたが、申し訳ありませんが私は CSS がよくわからないためコメントができません。どなたか CSS に詳しい方コメントをよろしくお願いします。
投稿一覧画面で、visさんがデザインに組み込んでくれていたmixiと同じような操作の画面の切り替えに対応してみました。

主にmodels/Model.class.phpの中のgetTreadToukouメソッドに処理を追加しました。また画面の対応する部分も多少変更しています。

デモを更新しましたのでご覧ください。

またソースは今回も特にバージョンは変えないで、28. のものに上書きしています。

ログインすると、残り3件のコメントが見れるよ

mixiユーザー
ログインしてコメントしよう!

phpMixiBBS 更新情報

phpMixiBBSのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。

人気コミュニティランキング