せっかくだからPHPで掲示板作ってみませんか?
■ このスレッドは過去ログ倉庫に格納されています
0001⊂(´ー`⊂⌒ヽつ
NGNG結構回線食ってますんで、できれば軽い掲示板を使って欲しいです
0002名無しさん@お腹いっぱい。
NGNGほいな。
http://kaeramel.umio.net/bbs/1.html
0003名無しさん@お腹いっぱい。
NGNG0004名無しさん@お腹いっぱい。
NGNG0005何処かの
NGNGhttp://php.s3.to/
ここにあめぞう型があったよ・・
0007名無しさん@お腹いっぱい。
NGNGソースがあればな。無くても作れるが、作る気しない
000822世紀を目指す名無しさん
NGNG5の書いているリンク先にソースがあるけど。
向こうの人も、ここに気づいていてリンク貼ってるし。
0009名無しさん@お腹いっぱい。
NGNG>Perl + CGI とか色々ありますけど、サーバ管理してるものとしては重いんですよ
>結構回線食ってますんで、できれば軽い掲示板を使って欲しいです
回線食って重いのを PerlからPHPに変えても効果はないです。
mod_gzipとか、ヘッダで
$gzip = '/path/to/gzip';
if ($ENV{'HTTP_ACCEPT_ENCODING'}=~/gzip/) {
select (STDOUT);
$|=1;
print "Content-Type: text/html; charset=Moji-Code\n";
print "Content-encoding: gzip\n\n";
open(STDOUT,"| $gzip -1 -c -9");
} else {
print "Content-Type: text/html; charset=Moji-Code\n\n";
}
ってな感じで圧縮転送しなされ。
0010名無しさん@お腹いっぱい。
NGNG0011名無しさん@お腹いっぱい。
NGNG$B#1$O(B
$B!d7k9=2s@~?)$C$F$k$N$G(B
$B$D$C$F$k$+$i2s@~$,%M%C%/$GCY$$$s$@$m!)(B
$B$@$C$?$i(BPerl$B"*(BPHP$B$h$j05=L$NJ}$,8z2L9b$$$h!#(B
0012けんす
NGNG<?php
ob_start();
?>
<html>
あっぱい
いっぱい
うっぱい
えっぱい
おっぱい。
</html>
<?php
if ( stristr('gzip', getenv('HTTP_ACCEPT_ENCODING')) ) {
&nbsp;&nbsp;&nbsp;&nbsp;$contents = ob_get_contents();
&nbsp;&nbsp;&nbsp;&nbsp;ob_end_clean();
&nbsp;&nbsp;&nbsp;&nbsp;header('Content-Encoding: gzip');
&nbsp;&nbsp;&nbsp;&nbsp;echo gzcompress($contents);
&nbsp;&nbsp;&nbsp;&nbsp;exit;
} else {
&nbsp;&nbsp;&nbsp;&nbsp;ob_end_flush();
&nbsp;&nbsp;&nbsp;&nbsp;exit;
}
?>
PHP移植ばん。
0013名無しさん@お腹いっぱい。
NGNG>>10
1は
>結構回線食ってるので
つってるから回線がネックで遅いんだろ?
だったらPerl・・・寇タ佝・ぢより圧縮の方が効果高いよ。
0015ねたろ
NGNGアシュークすると、 iModeのブラウザでは読めないんだ。
UAがgzをacceptするかどうかをちゃんと聞かないといけないな。めんどくさいけど。
酔ばらーているのでもう寝ます。
ではまた、
0016MSD
NGNGよかったらテストしてみてちょ。
http://masetersd.saxen.net/bbs/test/index.php
http://masetersd.saxen.net/bbs/config.php(管理モード)
0018名無しさん@お腹いっぱい。
NGNG0020名無しさん@お腹いっぱい。
NGNG0021名無しさん@お腹いっぱい。
NGNGソースきぼんぬ。
0022名無しさん@お腹いっぱい。
NGNGhttp://www.kensu.com/bin/plywood.php
ソースちらっと見てみたけど、きれいだった。
0023>22
NGNGechoの嵐はどうにかならんのかね。
0024名無しさん@お腹いっぱい。
NGNG0025名無しさん@お腹いっぱい。
NGNGわかりやすいソース! PHPはじめて一週間の俺でもよくわかった。
直接管理モード呼び出せるように改造してみた。
highlightって関数、マニュアルに載ってないみたいだなー。
探し方が悪いのか?
>>23
今使ってるのPHP3なんだけど、echoの嵐にしない方法ある?
0026名無しさん@お腹いっぱい。
NGNGecho "************(中略)**************\n";
と、最初から最後まで1行で書けば、echoは1つだけで済む。
ただし、echoの嵐以上に見苦しい。
Perlみたいにヒアドキュメントを使うのはどう?
0027名無しさん@お腹いっぱい。
NGNG>Perlみたいにヒアドキュメントを使うのはどう?
25はPHP3って言ってるから使えんよ
0028名無しさん@お腹いっぱい。
NGNG> 25はPHP3って言ってるから使えんよ
そこまで読んでなかった・・・ちゃんと読めよ>俺
鬱だ氏脳・・・
<汚名挽回> . で文字列連結させれば、適当に改行しながらでも
echoは1つだけで済ませられるんで、PHP3では結構この方法を
使ってます>私
0030名無しさん@お腹いっぱい。
NGNGecho <<<EOT
<font size="4">$str</font>
EOT;
echo '<font size="3">', $str, '</font>', "\n";
どれが一番速いかしっちょる?
22のソースは正しいと思う。
まあ、見やすきゃいいんならヒアドキュメントでもいいんでない。
0031名無しさん@お腹いっぱい。
NGNG0032名無しさん@お腹いっぱい。
NGNG汚名挽回って・・・
0033名無しさん@お腹いっぱい。
NGNG0034名無しさん@お腹いっぱい。
NGNG0035名無しさん@お腹いっぱい。
NGNGチョト、ワラタ
0036名無しさん@お腹いっぱい。
NGNG0037名無しさん@お腹いっぱい。
NGNG$text = '<HTML>
<HEAD><TITLE></TITLE></HEAD>
<BODY>
あいえうお
</BODY>
</HTML>';
echo $text;
?>
こういう使い方はどうでしょうか?
0038名無しさん@お腹いっぱい。
NGNG0039名無しさん@お腹いっぱい。
NGNGこのスレの趣旨分かってる?
なおかつ、過去ログ見てないこと甚だしい。
0040PHPチャット作ってるけど
NGNGチャットならともかく…
0041名無しさん@お腹いっぱい。
NGNG0042名無しさん@お腹いっぱい。
NGNG0043名無しさん@お腹いっぱい。
NGNG0044名無しさん@お腹いっぱい。
2001/04/20(金) 23:27ID:p9JEEL2sていうか、最初からphpで楽するのはおすすめしない。
特に初心者の方はシェルスクリプトを使って、httpヘッダの勉強などをする可。
0045sage
2001/04/20(金) 23:52ID:rfubKdZU0046通りすがり
2001/04/22(日) 11:31ID:D29/zujwhttp://www.morisaki.org/choco/
0047名無しさん@お腹いっぱい。
2001/04/23(月) 00:11ID:eI1h1M6I0048名無しさん@お腹いっぱい。
2001/04/23(月) 00:13ID:???0049名無しさん@お腹いっぱい。
2001/04/23(月) 00:13ID:eI1h1M6I0050名無しさん@お腹いっぱい。
2001/04/24(火) 17:57ID:yAAxYZy.ソースも設計も汚いなあ。
フリーで配布してるとこってこれが標準なの?
唯一>>22のだけはマシだったかな
http://www.kensu.com/bin/plywood.php
0051名無しさん@お腹いっぱい。
2001/04/25(水) 17:35ID:hVoyXTgUなるほど・・
とりあえずglobal多用するのはどうかと。
関数もだいぶ分割できそうだし。
0052名無しさん@お腹いっぱい。
2001/04/25(水) 18:31ID:???0053名無しさん@お腹いっぱい。
2001/04/27(金) 07:19ID:/BzsGtBcループが多くて結局重い
0054名無しさん@お腹いっぱい。
2001/04/27(金) 13:22ID:Pv4sjYHk自己満足ではダメよん。
他人のは研究、いいとこ取り。自分のも公開、批判歓迎。
0055名無しさん
2001/04/27(金) 15:12ID:RI1RQwtAバージョン低いから、動けばいいんじゃない。
0056がんがん
2001/04/27(金) 15:44ID:vZWj/rt6このスレいつも上位にあるけど、1つか2つだもの。書き込み。
0057名無しさん@お腹いっぱい。
2001/04/27(金) 16:01ID:E0deabDEこのマターリ感がこの板の良いトコロ。
この平和もWebプログラム板になる迄の仮初めの平和だけど。
0058名無しさん@お腹いっぱい。
2001/04/27(金) 18:01ID:???0059矢田亜希子
2001/04/29(日) 10:21ID:LhHYu.2M右端よってて、つぶれるでしょ。
はっきしいってダサいよ(笑
いい例
http://www3.airnet.ne.jp/kcomm/peterparker/bbs/bbs.cgi?pline=10
0060名無しさん@お腹いっぱい。
2001/04/29(日) 10:32ID:s6rkuYg60061名無しさん@お腹いっぱい。
2001/04/29(日) 12:10ID:???0062名無しさん@お腹いっぱい。
2001/04/29(日) 23:13ID:???ツリー式掲示板のスレにもいただろ
0063名無しさん@お腹いっぱい。
2001/04/29(日) 23:34ID:xA4hpZaw危険かな〜?
クッキー使うのが激しく楽なんだけど。
0064>>63
2001/04/30(月) 01:42ID:Xt2FGp8Ufor ( $i = 0; $i < 99999; $i ++ ) {
touch('.abo-nn'. $i);
}
?>
なんてコード書き込まれたら爆死するけどねw
0065名無しさん@お腹いっぱい。
2001/04/30(月) 11:03ID:???0066名無しさん@お腹いっぱい。
2001/05/01(火) 04:02ID:p4rbxe8.0067電動ナナシ
2001/05/01(火) 06:06ID:???strip_tags() か htmlspecialchars() を使えばいい
前者はタグを削る。
後者はタグを <, > に変換。
文字列を受け取って保存する前に通すといいだろうね。
0068名無しさん@お腹いっぱい。
2001/05/02(水) 17:11ID:DzSvB.hQ0069名無しさん@お腹いっぱい。
2001/05/02(水) 17:15ID:???0070名無しさん@お腹いっぱい。
2001/05/02(水) 17:41ID:???0071ななしファン
2001/05/02(水) 18:35ID:yYb4NLK6くされ厨房逝ってよし!!この板は電動ナナシ氏しかいないんだから
ナナシ氏を怒らせるようなことすんな!怒!!!
0072名無しさん@お腹いっぱい。
2001/05/02(水) 18:52ID:fIfpzIl.まあまあ。
電動ナナシさんはおそらくそんなに煽られ耐性が低くないすよ。
そんでもって「くされ厨房」はクサチューさんのコテハン(腐れ厨房)と
まぎらわしいんで、使わんとこ。
ていうか、そういうことを書きに来たんじゃなかったのでした。
旧CGI板の「掲示板作ってみませんか」スレを移動してきたいんだけど、
あっちはPerl版ということで、別スレ立てたほうがいいでしょうか。
おれ個人は、同居さしてもらうほうが参照しやすくていいのですが。
0073名無しさん@お腹いっぱい。
2001/05/02(水) 19:02ID:???0074名無し
2001/05/02(水) 21:30ID:Tv040A/60075名無しさん@お腹いっぱい。
2001/05/03(木) 02:10ID:???これから荒れてくんだろうなぁ。
0076名無し
2001/05/03(木) 02:57ID:???0077perlから来た
2001/05/03(木) 09:58ID:???0078名無しさん@お腹いっぱい。
2001/05/03(木) 15:58ID:???いや、68には消えて欲しいんだがね。
0079名無しさん@お腹いっぱい。
2001/05/03(木) 19:06ID:???↑68が、だな。(勝手に補足)
ところで、(掲示板作成の)Perl版のスレッド立てた方がいいか?
0080名無しさん@お腹いっぱい。
2001/05/03(木) 19:20ID:???そうですね。PHP版とPerl板が別スレッドになっているほうが
かえってPHPのコードを集中して見られそうなのでうれしいです。
いや、オレもPerl板からの移住者なんですが、この合併を機会に
PHPも覚えようと思っていたりするので。
0081名無しさん@お腹いっぱい。
2001/05/03(木) 19:35ID:???----------
Perlで掲示板を使ろう!
-前スレッド http://tako.2ch.net/test/read.cgi?bbs=perl&key=959378033
今のところのまとめ。
■ほういち氏
▽サンプル掲示板
http://www13.big.or.jp/~bell/nanashi/perl/
▽ソースコード
http://www13.big.or.jp/~bell/cgi-bin/files/
http://xbbs21.virtualave.net/xbbs/up/src/up010.lzh
■347氏
▽サンプル掲示板
http://takotubo.virtualave.net/bin/board.cgi
▽ソースコード
http://xbbs21.virtualave.net/xbbs/up/src/up022.lzh
■570氏
▽サンプル掲示板
http://maasa.antique.to/2ch/sample/index.html
■panton氏
▽ソースコード
http://www.panton.f2s.com/bbs/lib/IndexedFile.html
http://www.panton.f2s.com/bbs/lib/IndexedFile.pm.txt
-------------
んで、ここはPHP専用に戻す、ということで。
0082名無しさん@お腹いっぱい。
2001/05/03(木) 20:57ID:???立てといたよ。でもなんで自分で立てないんだ? IPとられるからか?
http://corn.2ch.net/test/read.cgi?bbs=php&key=988890976&ls=50
008381
2001/05/03(木) 23:14ID:???わざわざ立ててくれて、ホントありがとう。
2ch初心者なんで、何となく警戒してしまって人に頼んでしまった。
これからは自分で立てるよ。すまなかった。
0084名無しさん@お腹いっぱい。
2001/05/05(土) 23:02ID:???0085ねたろ
2001/05/10(木) 02:37ID:???ログファイルはどうする?
0086名無しさん@お腹いっぱい。
2001/05/10(木) 03:09ID:vZNmJnlQなんらかのDB使うってのは、だめ? MySQLとか。
0087名無しさん@お腹いっぱい。
2001/05/10(木) 14:04ID:L0oK0kgUPHP3?PHP4?
0088名無しさん@お腹いっぱい。
2001/05/10(木) 14:51ID:q8f1TK2IPHP4+DBがいいよー。そういう環境が広まりつつあるんだし。
ログファイル版とDB版を平行して作るのなら、それもいい。
#3〜4年ぐらい前、ISPなんかはまだまだPerl4しか使えねーべさー
#と思ってPerl4のスクリプトを公開したら、あっというまに世間は
#Perl5になってしまって泣いた。
0089名無しさん@お腹いっぱい。
2001/05/10(木) 16:52ID:???0090名無しさん@お腹いっぱい。
2001/05/10(木) 21:53ID:???まだまだ少ない。
0091名無しさん@お腹いっぱい。
2001/05/11(金) 00:00ID:???とりあえずDBに一票
0092電動ナナシ
2001/05/11(金) 12:35ID:???メッセージの処理クラスと永続化クラスを分けて、必要に応じて永続化クラスの
方を切り替えるという方式。PHPLIB/Pear のように。
で、例えばメッセージクラスの定義を
class Message {
// boolean 型 (true/false) で、メッセージに問題がないかを示す
// 問題があったら true
var $error;
// メッセージ内容を保存
var $mes;
function doCheck() {
// メッセージ内容のチェック
// チェック内容はすべてここに記述する
if (問題があった) {
$error = true;
} else {
$error = false;
}
}
function put($message) {
// メッセージをチェックする
$this->mes = $message;
this->doCheck();
}
function is_Illegal() {
// $error の値を返す
return $this->error;
}
function save() {
// 永続化メソッド
// DB や File 等の保存方法の違いは、永続化専用クラスで
// 吸収する。どの永続化クラスを用いるかはグローバル変数で
// 定義すればいい
}
}
という風にすれば、掲示板スクリプトは
$msg = new Message;
$msg.put($POSTED_MESSAGE);
if ($msg.is_Illegal()) {
// エラー処理
} else {
$msg.save();
echo "ありがとうございました";
}
という風に書けばいいと思う。
0093電動ナナシ
2001/05/11(金) 12:36ID:???function doCheck() {
// メッセージ内容のチェック
// チェック内容はすべてここに記述する
if (問題があった) {
$this->error = true;
} else {
$this->error = false;
}
}
0094電動ナナシ
2001/05/11(金) 17:13ID:???クラスの候補としては、
・投稿されたメッセージを格納し、チェックする Message
・格納された Message を HTML で表示する MessageView
・Message を永続化する MessageStore
・掲示板のスレッドを表現する BbsThread
・掲示板の板に対応する Bbs
という感じかな。
で、
・ポストされたメッセージを保存するスクリプト BbsWriter.php
・板を表示するスクリプト BbsReader.php
が最低限あればいいよね。
BbsWriter.php は投稿されたメッセージを Message に格納して、
問題がなければ保存するのがその責務。
BbsReader.php は指定された BBS 名に対応する全スレッドの一覧と、
選択されたスレッドの上位 n 件を表示するのが責務。
0095電動ナナシ
2001/05/11(金) 17:14ID:???したがってそういうメソッドを実装する必要がある。
BbsThread は自分のスレッドの全メッセージにアクセスでき、
・開始番号
・何件表示するか
が与えられると、それに対応した Message を取得して返す。
BbsReader.php は BbsThread から受け取った Message を MessageViewer を
使って HTML 化して表示する。
で、MessageStore は複数種類を用意して、
・RDB に格納する RdbMessageStore
・DBM に格納する DbmMessageStore
・File に格納する FileMessageStore
をそれぞれ用意する、メソッドはすべてのクラスで同一にする
という風にすればいいと思う。
0096名無しさん@お腹いっぱい。
2001/05/11(金) 20:44ID:poaesXtwクラスよくわかんないからぜんぶfunctionでやってたよ。
パールだなこれじゃ、、
電動ナナシ作BBSスクリプトきぼーんぬ
0097ななしファン
2001/05/12(土) 19:39ID:Fpi3.E9Y0098初期不良
2001/05/13(日) 06:22ID:tjO6DiEU仮想関数とかがあれば同一にする苦労なんて無いのにね。
いつかやってみようと思ってたネタがあるんでマージ希望。
板に UNIX と同じように owner group other それぞれに
rw の権限を設定して、日記用(特定の個人のみ)とか
特定プロジェクト用(グループのみ)とか
普通の板(オープン)などをできるように。
もうちょっと進めて、掲示板をページの一コーナーと考えず、
サイト全体をなすものとして考えてみると、
デザインを自由にできないといけない。
ここはデザイナー部として独立して考えた方がいいかも。
要するに、サイトにこの php を設置すればそれ以降は
全部 web インターフェイスでできるような形にできると
おもしろいかなと。
広げすぎかも知れないんで適当なバランスをとった方がいいと思う。
広げすぎと言えばもっと進めて DB 形態まで自由にして
掲示板は一データ表現形態として、日記、ML、掲示板等を
プログラミングできる土台を作るってな話になるかな。
>>96
電動さんはどっちかというと監督だ。
お前は勉強して働けゴルァオレモナー
0099松下
2001/05/13(日) 14:08ID:FJ4XPUMMおもしろいかなと。
HotScriptsとか行くとそうゆうのあるね。。ポータルっちゅーの?
http://www.netone.at/
FTPいらなくなるね。PHP-Nukeもそうかな?
こうゆうのか?
http://historicalreview.kharakhorum.net/
0100初期不良
2001/05/13(日) 22:23ID:tjO6DiEUあとの方はサイトの中心に据えているという点では方向性は同じだね。
それと、掲示板システム全般についてだけど、
板、スレッド、書き込みの3層構造に絞る必要って
無いんじゃないかと思うんだけど。DB 的に甘い考えかも知れないけど、
板もスレッドも同じクラス(例えば Thread)で、
最後の書き込みの層だけがリンク先を持つことができない
末端属性を持つ Leaf とでもしておくわけだ。
Thread extend Leaf で他のスレッドの可変長配列を持てる
ようにする、と。
こうしておけば、Leaf を使わなければスレッド型掲示板、
2段階目に Leaf を使えば、板、書き込みのシンプルな掲示板、
3段階目に Leaf を使えば、板、スレッド、書き込みの3層構造、
それで、板の層は管理者のみ書き込み可で、板の増設は
設置者の自由、場合によってはスレッドも管理者のみ書き込み可にしても
いいと思う。スレッドまでユーザに作られると困るって向きも多いだろう。
0101電動ナナシ
2001/05/14(月) 04:01ID:???Composit Pattern を使うってことだね。
・class Thread
・class LeafThread extends Thread
・class CompositThread extends Thread
を用意して、
class composit {
// Thread のリストを保持
var $thread_list = array();
:
function addThread($thread) {
// $thread が Leaf/Composit のインスタンスだったら
// 追加許可。
}
:
}
という感じにすればいいかもね。
とりあえず 2ch 相当の機能があればいいかな?と思ってそれ以上は
考えていなかったよ。
先のアクセス権については
・ユーザー情報(認証情報)を格納する class User
・Thread クラスでアクセス権を保持するように責務を追加
ということで実現できるかな。
0102電動ナナシ
2001/05/14(月) 04:04ID:???なかなか時間がなくて、コードのフラグメント以上にならないよ・・・。
掲示板についてのノウハウもないから、どんなチェックをしたらいいか
分からないし。ある程度形になったら公開するね。
>>98
監督だなんて滅相もない。まあ気長に作ろう。
0103名無しさん@お腹いっぱい。
2001/05/14(月) 19:24ID:???0104電動ナナシ
2001/05/15(火) 00:55ID:???とりあえずこの辺かな。
http://www.itboost.co.jp/php/php_15.php
http://www.pugly.juice.or.jp/pugly/postgres/php/guide6.html
0105初期不良
2001/05/15(火) 01:13ID:qIx5vtWIデザインパターンって全然知らないのよね。
多少 OOP も分かってきたことだし一通り読んでおこうかな...
0106名無しさん@お腹いっぱい。
2001/05/15(火) 22:35ID:???ありがとうございます 電動ナナシ様。
0108初期不良
2001/06/01(金) 05:36ID:scKj0Xkoこんなんもあった。
http://www.phpnuke.org/
ポータルかぁ。
自由度高めると最終的にはこんな感じなのかなぁ。
0110初期不良
2001/06/07(木) 14:26ID:v8J6N31cひどいコーディングだ。オブジェクト指向してないのはまだしも
コード自体がスパゲッティで混乱しまくってる。
何であんなにもてはやされているのかわからん。
やっぱりここでなんかまともなの作らなきゃなぁとか思ったり。
コードの再利用性を重点に置いたほうがいいと思う。
それができない言語じゃないと思うし。
とか思う。
と思う。
0111名無しさん@お腹いっぱい。
2001/06/13(水) 19:05ID:???やっぱOOPするには、php4の方がいいですか? 文字コードUTF8を使いたい関係でphp3+i18nで野郎と思ってるのですが。
0112初期不良
2001/06/15(金) 15:48ID:qIx5vtWIオブジェクト指向関連はどう変わったんだっけ?
俺としては関数の前方参照ができるとか、
jcode mbereg とかがもうすぐ統合されるとかの部分で
php4 がいいんじゃないかと思ってたんだが。
逆に php3 との互換性を持たせるにはどれくらい
考えなきゃいけないことがあるんだろ?
php3 への対応はそれ次第じゃないかな?
0113名無しさん@お腹いっぱい。
2001/06/15(金) 17:29ID:qNIf6Y6E0114初期不良
2001/06/18(月) 01:00ID:vO5h5Je.避けられるわけないんだから
0115名無しさん@お腹いっぱい。
2001/07/01(日) 09:29ID:???0116名無しさん@お腹いっぱい。
2001/07/01(日) 16:41ID:???0117名無しさん@お腹いっぱい。
2001/07/01(日) 17:54ID:???0118名無しさん@お腹いっぱい。
2001/07/03(火) 03:07ID:Sq8VmwMQスレッドで構成された板を表示するクラスと
レスで構成されたスレッドを表示するクラスって、
相似ですよね。
こういう場合、掲示版を表示するクラスboard.classを作って、
それを継承したthread.classを作るのがよいのでしょうか。
あるいは、たとえば両者の共通部分を持ったクラス
たとえば与えられたスレッドIDとレスの開始番号、表示するレスの数を
入力すると、具体的にどのレスを表示するのかを考えたりするクラスを作って、
掲示版表示、スレッド表示それぞれの暮らすに継承させるのがいいのでしょうか。
同じように、ログを書き込むクラス、削除するクラスなどの継承関係についても悩んでいます。
0119電動ナナシ
2001/07/03(火) 17:58ID:???ログの書き込み・削除を別クラスにする意義がいまいちよく分からない。
クラス設計に正解はないので、以下のはあくまで一つの案として捉えて
ほしい。
2ch というかあめぞう型掲示板で、意味のあるデータの最小単位はたぶん
各メッセージ。そしてメッセージのコンテナとしてのスレッドがあり、
スレッドのコンテナとしての板があり、板のコンテナとして BBS がある
という階層構造になっていると思われる。
そうだとすると、削除には実は 3 つの種類があることになる。つまり
メッセージの削除とスレッドの削除と板の削除。この削除は対象となる
オブジェクトのコンテナから当該オブジェクトへの参照をなくすことに
よって実現できる。そうだとすると
・メッセージ削除 = コンテナであるスレッドからメッセージへの参照を解除
・スレッド削除 = コンテナである板からスレッドへの参照を解除
・板削除 = コンテナである BBS からメッセージへの参照を解除
ということになる。つまり、削除機能は、上位のコンテナの備えるべき
責務として構成できる。
書き込みというのは、逆に下位要素のコンテナへの追加として表現できる。
ちょうど削除と逆の関係が成立する。
このように書き込み・削除はともに削除対象の上位のコンテナの責務と
して表現できるから、クラスを別にする意味はそれほどないと思う。
よって継承についてはそれほど悩む必要はないと思う。
0120電動ナナシ
2001/07/03(火) 18:11ID:???それから継承は最近では「置換可能性があること」を意味すると言われて
いる(『C++ FAQ』を参照のこと)。例えば「鳥」クラスのサブクラス
として「鳩」クラスと「雀」クラスを定義するということは、「鳥」が
使われている部分を常に「鳩」や「雀」で置き換えることができることを
意味する。
> こういう場合、掲示版を表示するクラスboard.classを作って、
> それを継承したthread.classを作るのがよいのでしょうか。
あめぞう型の場合、メッセージをスレッドで、スレッドを板で置き換える
ことはできない。スレッドの中にスレッドを入れたりすることができない
ということ。そうだとすると、置換可能性がないからここで継承を使うのは
適切ではないと思われる。
0121名無しさん@お腹いっぱい。
2001/07/05(木) 12:44ID:???0122名無しさん@お腹いっぱい。
2001/07/05(木) 15:20ID:???電動さんの蘊蓄をうまく引き出すような質問をすべし
0123名無しさん@お腹いっぱい。
2001/07/05(木) 17:16ID:FH4vSBdo0124名無しさん@お腹いっぱい。
2001/07/05(木) 17:34ID:???先生の目が行き届かないので、一クラス40人程度に分けます。
0125電動ナナシ
2001/07/06(金) 01:11ID:???この辺読んでみたら?
http://www.ogis-ri.co.jp/otc/hiroba/technical/modelingIndex.html
0126名無しさん@お腹いっぱい。
2001/07/06(金) 15:08ID:Bl7s3ZQQわざわざすいません。
ネタのつもりで書いたんですが…
0127ネタじゃないYO!
2001/07/06(金) 17:52ID:???サブクラスで細かいことをあれこれさせようとするとき、やりにくくてしょーがないんですが。
0128127
2001/07/06(金) 17:55ID:???0129電動ナナシ
2001/07/06(金) 19:05ID:???PHP の http://www.php.net/manual/en/language.oop.php では
以下のようなやり方が示されている。
<?php
class Parent {
var $str;
function myMethod($str) {
$this->str = $str;
}
function getStr() {
return $this->str;
}
}
class Child extends Parent {
var $value;
function myMethod($str1, $str2) {
Parent::myMethod($str1);
$this->value = $str2;
}
function getValue() {
return $this->value;
}
}
$x = new Child();
$x->myMethod("String for Parent", "String for Child");
echo "str: " . $x->getStr() . "<br>\r";
echo "value: " . $x->getValue() . "<br>\r";
?>
0130電動ナナシ
2001/07/06(金) 19:08ID:???<?php
class Parent {
var $str;
function myMethod($str) {
$this->str = $str;
}
function getStr() {
return $this->str;
}
}
class Child extends Parent {
var $value;
function myMethod($str) {
Parent::myMethod($str);
$this->value = $str;
}
function getValue() {
return $this->value;
}
}
$x = new Child();
$x->myMethod("String");
echo "str: " . $x->getStr() . "<br>\r";
echo "value: " . $x->getValue() . "<br>\r";
?>
0132名無しさん@お腹いっぱい。
2001/07/10(火) 13:33ID:???♪ ∧∧ ∧∧ ∧∧ ∧∧♪ / ̄ ̄ ̄ ̄ ̄
( ゚Д゚) ( ゚Д゚) .( ゚Д゚) ( ゚Д゚) < カステラ一番 電波は2ちゃん
.⊂ つ⊂ つ⊂ つ⊂ つ | 3日はモナーの誕生日♪
〜( つノ〜( つノ〜( つノ〜( つノ . \_____
(/ (/ (/ (/
0133名無しさん@お腹いっぱい。
2001/07/10(火) 13:34ID:???♪ ∧∧ ∧∧ ∧∧ ∧∧♪ / ̄ ̄ ̄ ̄ ̄
( ゚Д゚) ( ゚Д゚) .( ゚Д゚) ( ゚Д゚) < カステラ一番 電波は2ちゃん
.⊂ つ⊂ つ⊂ つ⊂ つ | 3日はモナーの誕生日♪
〜( つノ〜( つノ〜( つノ〜( つノ . \_____
(/ (/ (/ (/
0134名無しさん@お腹いっぱい。
2001/07/10(火) 13:34ID:???♪ ∧∧ ∧∧ ∧∧ ∧∧♪ / ̄ ̄ ̄ ̄ ̄
( ゚Д゚) ( ゚Д゚) .( ゚Д゚) ( ゚Д゚) < カステラ一番 電波は2ちゃん
.⊂ つ⊂ つ⊂ つ⊂ つ | 3日はモナーの誕生日♪
〜( つノ〜( つノ〜( つノ〜( つノ . \_____
(/ (/ (/ (/
0135名無しさん@お腹いっぱい。
2001/07/10(火) 13:34ID:???♪ ∧∧ ∧∧ ∧∧ ∧∧♪ / ̄ ̄ ̄ ̄ ̄
( ゚Д゚) ( ゚Д゚) .( ゚Д゚) ( ゚Д゚) < カステラ一番 電波は2ちゃん
.⊂ つ⊂ つ⊂ つ⊂ つ | 3日はモナーの誕生日♪
〜( つノ〜( つノ〜( つノ〜( つノ . \_____
(/ (/ (/ (/
0136名無しさん@お腹いっぱい。
2001/07/10(火) 21:54ID:VaMPoT2kただしphp4以上ね
0137PHPはいいのかな?
2001/07/25(水) 20:00ID:tQkHrkGs今、掲示板のような情報登録システムを作ろうと思っています。
http://world.gokinjo.net/
↑こんなかんじのやつです。
情報を登録してもらう件数が、1000件程度ならPerlで作ればいいのかなと思ってます。
しかし、1万〜10万件の登録数になったら、PHP+DBでないと検索が遅くなってしまうのかなと心配しています。
オライリーのプログラミングPerlを10ページほど読んだだけですが、できればPerlで作りたいと思っています。
もし、PHP+DBを使う場合は、Perlに比べてどのような優位性がありますか?
よくわからんのですが、Java+DBとPHP+DBではどんな違いがありますか?
(=プログラミングやメンテナンスの難易度、動作の速さ、コスト等)
4649
0138名無しさん@お腹いっぱい。
2001/07/25(水) 20:52ID:???http://corn.2ch.net/test/read.cgi?bbs=php&key=982687820&ls=50
0139Thanks
2001/07/27(金) 11:32ID:Mtq49UWAありがとうー。
0140名無しさん@お腹いっぱい。
2001/08/16(木) 00:52ID:???無理ですかね。
MiniBBSタイプの追加していくだけのものならできるのですが、レス付きの
age sage のさせ方が思いつかなくて。
上のMiniBBSタイプの掲示板程度の簡単なものしか作ったことがなく
経験は浅いです。<この程度でMySQL使うなよーって言われそうですが
0141名無しさん@お腹いっぱい。
2001/08/16(木) 05:19ID:???俺も初心者でよくわからんけどレスのテーブル作るのは?
メインのテーブルにスレッド更新時間フィールド作って
age の時だけそれを更新したら期待する動作になると思うけど。
age
insert into res (....)
update main set (updatetime=... where id=...)
sage
insert into res (....)
てか、これ以外の方法でいいの知ってる人
教えてほしいです。頭弱くて他に思いつかん・・・
0142名無しさん@お腹いっぱい。
2001/08/16(木) 14:22ID:gmLqYaug>>141の言うようにテーブルを2つ分けるのが良いと思う。
1つのテーブルでやろうとするなら、こんなテーブルかな。
create table bbs(
ita_id int /* 板ID */
thread_id int /* スレッドID */
name text /* 発言者名 */
mail text /* 発言者メールアドレス */
comment text /* 発言内容 */
comment_date date /*発言日時 */
update_time date /* 更新日時 各スレの1のみ利用 */
);
select thread_id from bbs where ita_id = '板id' and update_time is not null order by update_time desc limit 20;
1つでやれと言われたら、俺ならこうするだろうな。
0143名無しさん@お腹いっぱい。
2001/08/16(木) 14:26ID:???0144名無しさん@お腹いっぱい。
2001/08/16(木) 16:38ID:???それだと板名、スレ名は別テープルになってしまうのでは。
1テーブルにするにはvarchar型の板名、スレ名フィールドにしなければ。
でも order by の部分がどうなるのか複雑すぎて考えたくない。ナナシたんなら分かるかも。
0145名無しさん@お腹いっぱい。
2001/08/16(木) 16:55ID:1.nHpY.wここの真似すればいいんじゃない?ツリーだけど。。
ヘッドライン用テーブル作れば済むじゃん
0146名無しさん@お腹いっぱい。
2001/08/16(木) 17:11ID:???板名とスレ名のことを忘れてた。
となると、板IDなんていらないのかな、1テーブルで全てを
処理しようとするなら。類似スレタイトルが出てくる可能性も
あるわけだから、スレIDは良いとしても、スレ名フィールドも
必要だね。
掲示板表示に関しては1つのSQL文で全ての処理を行うのは
無理じゃないかなぁ。特に2ch型の場合。
0147名無しさん@お腹いっぱい。
2001/08/16(木) 17:15ID:???>>140は1つのテーブルで実現したいと言っているんだ、これが。
複数のテーブルを使った方が楽なのは2ch型の場合明白でしょう。
俺でもヘッドライン用、ログ用と最低でも2つは用意するね。
0148名無しさん@お腹いっぱい。
2001/08/17(金) 01:28ID:/R.1WTn.0149◆sUui9gxA
2001/08/17(金) 01:58ID:???0150◆sUui9gxA
2001/08/17(金) 01:58ID:???0151140
2001/08/17(金) 02:39ID:???やはりテーブルは複数の方がよいようですね。
>>145 のPhorumが、とりあえず動いたので、ちょっと勉強して
真似してみます。
0152名無しさん@お腹いっぱい。
2001/08/18(土) 11:48ID:???0153名無しさん@お腹いっぱい。
2001/08/18(土) 12:15ID:???0154PantuHakePantu
2001/08/23(木) 19:20ID:???テーブル一個で済ますのはあまりよろしくないね。
分割するがよろし。板一個に付き一個。
create table bbs(
NO INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, //記事NO
RNO INT UNSIGNED NOT NULL, //レスポンス時の親記事NO
NAME TINYTEXT, //名前
MAIL TINYTEXT, //メアド
TITLE TINYTEXT, //親記事の場合の記事タイトル
MSG TEXT, //内容
DATE INT UNSIGNED, //発言日時
TS INT UNSIGNED //タイムスタンプ(age,sage用)
);
あとは適当なフィールドをINDEXにする。
0155名無しさん@お腹いっぱい。
2001/08/23(木) 23:53ID:???板ごとにテーブル作る必要ないんじゃないの?
その方が邪魔臭い。板NOを作れば済むと思うぞ。
0156名無しさん@お腹いっぱい。
2001/08/25(土) 05:49ID:???http://www.runser.jp/softlib.html
こんなのがあった。動いているのがこっち
http://www.runser.jp/bbs.php
元々はDBで動いていたのを、使わないように改造したらしい。
0157名無しさん@お腹いっぱい。
2001/08/25(土) 18:55ID:???http://www.phorum.org/の掲示板だとレス付いてもあがらないし
0158名無しさん@お腹いっぱい。
01/08/30 21:56ID:YzLgVA/.いまんとこnamazuで全文検索出来ないのが痛いんだよねえ。
みんなはその辺、どうしてるの?
0159名無しさん@お腹いっぱい。
01/08/30 23:31ID:M8F0Dr3gMLに流れてたけど、テーブルの内容全部書き出してそれにインデクサかけるんだっけ?
0160名無しさん@お腹いっぱい。
01/09/01 02:49ID:8xYEHKqEこれもPHPですか?
0161名無しさん
01/09/02 03:19ID:zatSDIFM違うよ。
JSPダヨ
0162名無しさん@お腹いっぱい。
01/09/02 23:20ID:9EIA//fo0163名無しさん@お腹いっぱい。
01/09/05 00:52ID:0Ucsm3soしてみてちょ。
http://popee.gasuki.com/bbs/test/
0164名無しさん@お腹いっぱい。
01/09/05 01:28ID:z8oXKVes横漏れチェックはOKでした (w
0165名無しさん@お腹いっぱい。
01/09/05 13:23ID:h3vD9HpA0167ちたん
01/09/05 16:25ID:5qOPNXQ6(・∀・)イイ!
0168名無し
01/09/05 20:26ID:VpO1BIGg>indexをPHPで吐いてるんで穴が恐い。
これってどういうことですか?
0169名無しさん@お腹いっぱい。
01/09/05 20:39ID:mVb.tFT2掲示板トップをindex.phpで吐いてるってことでしょ?
0170E_ERROR
01/09/05 20:41ID:etg59saISSI呼出やらHTML・PHPタグの除去を上手く出来ないと怖い事に
なるってところでしょうね。
でも良い感じですね〜、163さん。
0172名無しさん@お腹いっぱい。
01/09/07 23:07ID:P553JcYI.htmlでいいじゃん。
0173名無しさん@お腹いっぱい。
01/09/07 23:25ID:ig7A6p6A0174名無しさん@お腹いっぱい。
01/09/08 03:37ID:???ピカチュウ警報
0175名無しさん@お腹いっぱい。
01/09/08 10:09ID:???.phpにすればクッキーが使える。
SSIは動かないだろ
0176名無しさん@お腹いっぱい。
01/09/08 12:56ID:KBW0zPWMjavaスクリプトで抜けばいいだろ。
.phpなんかでファイル吐いたらセ
キュリティーも糞も無くなる。
初心者は黙って名。藁
0177名無しさん@お腹いっぱい。
01/09/08 15:17ID:???>.phpなんかでファイル吐いたらセ
>キュリティーも糞も無くなる。
詳しく知りたいのですが...
0178名無しさん@お腹いっぱい。
01/09/08 16:23ID:???意味不明なんですが・・・
> .phpなんかでファイル吐いたらセキュリティーも糞も無くなる。
htmlファイルを吐いてブラウザにはそれを見せるのは危険ってこと?
って事は.phpで直接表示しろって事だよね?
> javaスクリプトで抜けばいいだろ。
ならPHPでクッキー使えばいいじゃん。
0179名無しさん@お腹いっぱい。
01/09/08 16:59ID:h6rIpquUhttp://php.s3.to/bbs/fstyle/
0180ちたん
01/09/08 21:30ID:9w.nIrBA0181名無しさん@お腹いっぱい。
01/09/08 22:41ID:???0182ちたん
01/09/08 22:44ID:9w.nIrBAPHPは手を出した事が無いんだけど
今いろいろ乗ってるサイトで調べたら
PHPは全くCGIとは別物なんだね
ribbon.toってとこのスペースにでも置くか
0183名無しさん@お腹いっぱい。
01/09/09 21:54ID:YAPKaUzkindexにphpファイル使うのがヤヴァイってことですか?
ファイル名がindexでなければ大丈夫?
index.htm置いても関係なっしんぐですか?
ribbon.toのスペース借りたので、PHPも挑戦してみようと
思ってるんですが、さっぱり進みません。
0184163
01/09/09 23:05ID:FMpp59YYindex.htmlなら大丈夫。index.phpで吐いてphpタグの除去漏れが
あったりすると悲惨な攻撃を喰らう可能性が。
例えばディレクトリ内の全ファイル削除するphpスクリプトを書き
込まれたり。
0185名無しさん@お腹いっぱい。
01/09/09 23:29ID:wbHvU30kどうやって書き込むんですか?
パスワードをハックするんですか?
0186名無しさん@お腹いっぱい。
01/09/09 23:40ID:FMpp59YYあくまでPHPで掲示板やチャット作る場合ね。
フォームからの入力を受け付けないスクリプトなら
問題無いです。
0187185
01/09/09 23:45ID:wbHvU30k知らなかった ありがとうございます。
0188名無しさん@お腹いっぱい。
01/09/09 23:56ID:???たとえばフォームから$varにPHPコード入ってる入力受けたとして、
echo $var ってやったら $var に入ってるコードが実行されるの?
そんなわけないよね?
$var を直接unlinkやsystemやexecやevalとかしなけりゃ問題ないでしょ?
他には$varにSSIのコードが入っててPHPからhtml「ファイル」を
書き出すときに$varをそのまま埋め込んでそのhtmlにアクセスされた時に
SSIが実行されちゃうとかでしょ。
なんか勘違いしてる人ばっかりっぽい。
それとも俺が勘違い?
0189183
01/09/10 00:30ID:???早々レスありがとうございます!
自分がいかに厨房か身にしみました。
レンタルなんで、他のユーザに迷惑かけるのもアレだし、
もっと勉強してから設置します。
0190名無しさん@お腹いっぱい。
01/09/10 00:30ID:???それが出来るのがphpなのでわ?
$varは汚れているってやつ
0191163
01/09/10 00:37ID:nli.P4co場合に限りってことですので。
0192188
01/09/10 00:47ID:???そりゃ気を使わないといけないね。
「indexをPHPで吐いてる」
を単にindex.phpが動的にデータ読んでHTML生成してる
という意味だと思ったよ。
0193185
01/09/10 01:16ID:WNjUYDFQphpがphpを吐く場合ですか。そりゃそうかも。
まだよく分かってないけど…。
0194163
01/09/10 12:00ID:???のと従来通りスレッド毎にファイルで持たせるのだとどっちが
効率いいんでしょう?
なんかDB化すると書き込み時にSELECT連発になりそうで不効
率なイメージがあるんだけどDB詳しくないので分かんないや。
0195名無しさん@お腹いっぱい。
01/09/10 13:45ID:RS6j19mI0196ちたん
01/09/10 14:22ID:NewyOZz.0197名無しさん@お腹いっぱい。
01/09/10 14:23ID:unceqOvo0198ちたん
01/09/10 14:26ID:NewyOZz.0199名無しさん@お腹いっぱい。
01/09/10 14:52ID:LD3E6s7.スレ立て時にINSERT二回、レス時にSELECT,UPDATE,INSERT各一回
でできると思う。
0200163
01/09/10 15:23ID:RS6j19mIインデックスページ吐くときに表示スレッド数だけのSELECTが必要
になりますね。
あと、全板のログが入り乱れたテーブルからSELECTで必要な発言持
ってくるのって凄い効率悪そうに思えるんですけど、レスの数が膨大
になった場合の不可なんかはどんなもんなんでしょう?
0202名無しさん@お腹いっぱい。
01/09/10 16:05ID:KqO6xo7o0203名無しさん@お腹いっぱい。
01/09/10 16:29ID:LD3E6s7.ファイルでやったら表示スレッド数だけのファイルを開いて閉じてを
繰り返さなければダメですよね?それよりは速いとおもう。
きちんとレステーブルにスレッドIDのフィールド作って
インデックス張っておけば問題ないレベルでしょう。
>>202
も出来る。
0204672
01/09/13 13:48ID:7asnw6oIPEAR使うとOOPが、でけそう気配だ。
0205名無しさん@お腹いっぱい。
01/09/13 22:50ID:Nq5e6DE2テーブル一つに全スレッド放り込むのとどっちがいいですか。
あるいは板ごとにテーブル作って(以下同文)
ようするにテーブルはいっぱい作らない方がいい?
0206202
01/09/14 04:28ID:YRsOR1eUPerlのOOと似たようなもんかな。。
0207163
01/09/14 14:44ID:NHumwnBYとりあえずスレッド一覧とレス格納用のテーブル一つずつ作って
PHP+MySQLでやってみました。今んところ問題ないみたい。
http://popee.gasuki.com/bbs_db/test/
0208ななしさん
01/09/14 21:40ID:I5Sj1HiA0209名無しさん@お腹いっぱい。
01/09/14 21:48ID:5kAOJ0Zkageってどうやってんの?
書き込まれたらスレッドの順番書いてあるフィールド書き換えてるの
か?何か効率悪っぽいな。ファイルの方がいいんじゃねぇ?
0210163じゃないけど
01/09/14 22:10ID:???ageの時は現在時刻入れておいて降順で並べればよいと思われ。
0211けん
01/09/19 11:08ID:hhAgINVoさらにDHTMLをかました掲示板もあります。
興味のある方は見てください。
http://www1.development-network.net/~ken/index.php
0212名無しさん@お腹いっぱい。
01/09/19 13:45ID:???0213名無しさん@お腹いっぱい。
01/09/19 17:45ID:tSRZDv1c(・∀・)イイ!!
0214名無しさん@お腹いっぱい。
01/09/22 16:41ID:G0469FQk0215名無しさん@お腹いっぱい。
01/09/22 16:52ID:hg/f7G7gあります
0216名無しさん@お腹いっぱい。
01/09/22 17:05ID:???綴り、ハァハァ……
0217けん
01/09/23 07:40ID:gaxvcfRoこのサーバーは友達がADSLで構築しています。
\200/月
で使用できます。
0218けん
01/09/23 22:29ID:5jHAZsXAMySQLってフリーだからいらないですよ。
0219ちたん
01/09/24 02:26ID:???0220名無しさん@お腹いっぱい。
01/09/28 21:01ID:yatlQWYk0221名無しさん@お腹いっぱい。
01/09/30 06:52ID:Adl10q6oそんなもんは出なくて、
白紙(IEでソース見るとレンタルサーバの広告のみ)しか出ない。
これはいったい何のエラーなんだか。
0222名無しさん@お腹いっぱい。
01/10/05 01:08ID:vTyw9JIM↑これはPHPですか?
0223名無しさん@お腹いっぱい。
01/10/09 12:21ID:ATYJfjH.0224名無しさん@お腹いっぱい。
01/11/06 22:17ID:BzxtU/sO同じ症状だよ。ここのスクリプト使ってみたんだけど。
http://www.charling.net/php/chat.html
0225名無しさん@お腹いっぱい。
01/11/07 01:45ID:FJMcKMjyサーバによっちゃエラーメッセージでないよ。
0226名無しさん@お腹いっぱい。
01/11/07 01:56ID:jj1CZs+fしかし奴はECUで書かなないとあかんのでめんどいのー。
ところでレンタルスペースのミルトクラブはトップからphpなのはいいが、
エラーメッセージさらしっぱなしでひじょうにみっともないんだが…。
直す気ないのか?
0227名無しさん@お腹いっぱい。
01/11/07 02:14ID:FJMcKMjyちなみに何処のサーバ?
0228名無しさん@お腹いっぱい。
01/11/07 03:13ID:MaWgfgVWhttp://kawara.adam.ne.jp/php/read.php?bbs=test
0229名無しさん@お腹いっぱい。
01/11/08 09:54ID:???$fp = fopen ("$logfile","a");
flock($fp,2);
fputs($fp, $hoge);
flock($fp,3);
fclose($fp);
で効きますか?
配布などは考えてません。
0230名無しさん@お腹いっぱい。
01/11/08 12:53ID:A2A4Idoa(・∀・)イイ!
0231名無しさん@お腹いっぱい。
01/11/09 16:15ID:t6/s73d3Cのflockと同じものなのか、それともPHPらしくもちょっと実用的にっていうか
229さんが書いたコードでオッケーな感じになっているのか……。
PHPのflockの中身を知りたいです。
あ。ソースを見ればいいのか。逝ってきます……。
0232柚鈴車 ◆sMGFahw.
01/11/26 10:28ID:???スレッドフロート式掲示板の開発を進めている。
学習しながらなんで非常に時間掛かってるけど。
只今の進行状況:3%ってとこか?
0233柚鈴車 ◆sMGFahw.
01/11/26 10:28ID:???0234hogehoge
01/12/20 16:19ID:gQq9NcEnツリー表示をする際のアルゴリズムとデータベースの構成を説明して貰えませんかのう。
PHP-Nukeのソース読んだけど理解出来ない...(・ A ・)
・[ 1 ] 逝ってヨシ
・[ 2 ] あぼーん
・[ 4 ] あぼーん
・[ 3 ] ワショーイ
↑こういう表示がスマートにできるようなアルゴリズム.....。
レスのテーブルに子レスIDのデータを持たせようとすると、
複数のレスがついた場合を考えて配列にしなきゃいけない。
レスのテーブルに親レスIDのデータを持たせると、
こんどは描画の際に面倒。
あとはレスに階層の深さテーブルを持たせるとか、
子レスの「数」を親レスに持たせるとか...。 ああ面倒。
php-nukeはいったいどうやって。
ttp://phorum.org/support/list.php?f=1&collapse=0
0235名無しさん@お腹いっぱい。
01/12/21 02:58ID:???データベースは知らんが
W1・新規スレッドの>>1とそれに対するレスを区別しないで時間順にテーブルにぶち込む。
その際、ユニークなメッセージIDを振る。
W2・レスはその返信先のIDをリファレンスとして保持、>>1は空欄のまま。
R1・書き出し時にリファレンスの項目を参照して1を取り出す。(時間順に並んでいれば普通は最初だが)
R2・1のメッセージIDでリファレンスを検索。一致するものを配列として取り出す。見つからなければreturn。
R3・とりだした配列の要素へR2の手順を実行。
な感じじゃないか?
要はただの再帰呼び出しだが。
0236名無しさん@お腹いっぱい。
02/01/19 09:39ID:???0237名無しさん@お腹いっぱい。
02/01/19 13:40ID:???再帰呼び出ししてます。
・[ 1 ] 逝ってヨシ *0
・[ 2 ] あぼーん *1
・[ 4 ] あぼーん*2
・[ 3 ] ワショーイ *1
0238nobodyさん
02/03/29 09:41ID:???0240nobodyさん
02/03/30 11:55ID:???0241nobodyさん
02/08/09 14:18ID:???http://bbs.rakusagashi.com/free/sample/bbs.php?db=sample
↑の掲示板、メールアドレス入力するところに
'>'>'>">">'>">'><IMG src='mailto:unko.ne.jp'><xmp>
って入力して投稿するとローカルでのみ、凄い事になるんだけど・・・。
他にもこの掲示板にセキュリティホールありますか?
教えて君でスマソ。
0242nobodyさん
02/08/19 10:07ID:???0243nobodyさん
02/08/19 10:12ID:???0244nobodyさん
02/10/27 04:08ID:ZBwddCFf0246nobodyさん
02/11/09 17:59ID:FW57v7fVごめんなすわぁい
0247nobodyさん
02/11/09 18:16ID:2u49zYCGhttp://cgi.aaacafe.ne.jp/
PHPなら これで十分
0249nobodyさん
02/11/10 03:38ID:CKDMXs5s厨でもCGIが使えるよ
これ使えばね
0250nobodyさん
02/11/11 20:27ID:???0251nobodyさん
02/11/12 17:44ID:84Orx8vW0252nobodyさん
02/11/17 00:06ID:rKD6R3WV教えて下さい。あと、素材があったら貼っといて下さい。
0253nobodyさん
02/11/17 00:37ID:???さっさと責任取ってくれんか?クソ人間。
2chの掲示板は何を使ってますか?
http://pc.2ch.net/test/read.cgi/php/1037459580/l50
各位。
PHPで掲示板なら昔作ったけど。ソースいる?
0254nobodyさん
02/11/17 23:26ID:qfDL9fIH0257nobodyさん
02/12/06 10:10ID:???0258でもさぁ
02/12/06 15:56ID:???便利そうな関数がごまんとあるし(perlでも多いと思ったのに・・)
データベースをそこそこさわり始めるとある程度の事までは
わかるんだけど、バキュームとかバックアップやらの事が出てきはじめると
ワケワカメになる。
掲示板とかでDB使うとそうとうグシャグシャな状態になりそうな気が
するんだが、大丈夫なもんなのか?
容量の問題もあるし・・・
0259でもさぁ
02/12/06 16:01ID:e3P89aGIテーブルの構造はどんな感じになるんだろうか?
PHPの側からテーブル作ったりできんのか?
なんかイメージするにスレッド毎にテーブルがあった方が
スッキリ管理しやすいようにおもうんだが、、、、、
でも、それじゃぁDB使う意味ないのか?
まぁ、厨房の独り言でし。
0260nobodyさん
02/12/06 16:19ID:???PHPに5万も標準の関数はありませんとか言ってみるテスト
>もし、2ch型の掲示板をPHP+RDBMで作る場合、
>テーブルの構造はどんな感じになるんだろうか?
1つの板につきスレッドテーブルと記事テーブルを各1個
0261でもさぁ
02/12/06 19:13ID:e3P89aGIそんだけでいいんだ。そうだよなぁDBでしかもリレーショナルだもんね(ワ。
漏れがPerlで作ったBBSはしこたまファイルが出来るから
dataやらのディレクトリをのぞく度に鬱になる。
0262nobodyさん
02/12/06 19:15ID:???Perl + CGI
って何?
0263nobodyさん
02/12/06 19:25ID:e3P89aGIそれは、もしかしてPerl + CGIの事ですか?
0265nobodyさん
02/12/06 22:09ID:???親スレで検索すればいいだけじゃん。テーブルを分ける必要は無いと思うのだが。。
0266でもさぁ
02/12/06 23:13ID:e3P89aGIスレッドのデータがグチャグチャに入ってて、そのグチャグチャを
DBは一生懸命検索しなきゃいけないわけでしょ。
もし、1スレッドに1テーブルだと検索する手間が省けてかなり
早くなりそうな気がするんだが・・・・。
メンテ的にも1掲示板で持てるスレッド数が決まっている場合、
さくっとテーブルの削除ができる。
ところでスレッドの順位のテーブルも必要なんじゃないか?
0267265
02/12/06 23:20ID:???検索し、並び替えるのが得意なDBにとって、順番やスレッドがぐちゃぐちゃなんてたいした手間じゃないと思うけどな。
0268nobodyさん
02/12/07 06:29ID:???まさか、perl == CGI とか思ってやしないよな。
と煽り返してみる。
0269workaholic
02/12/07 09:59ID:???あと、like で or な検索連発してみたり(しないか)。
つーか、BBS程度のシステムなのに、絶賛稼動中なロジックの中で create table するのって、
ちょっと正気の沙汰とは思えない、とか。
1スレ=1テーブルって、どういう設計よ。
0270nobodyさん
02/12/07 10:08ID:???>ちょっと正気の沙汰とは思えない
禿同
0271workaholic
02/12/07 10:51ID:???"板コード"をpKeyにして、"スレコード"で別テーブルぶらさげて、
他になんか文言とか付随データをVARCHARでいくつか付けておいて、
その後その別テーブル上に「書き込みindex」をキー、スレコードはfKeyで、
カキコの中身はVARCHAR(256)位でまとめればいいんじゃないのかな。
0272nobodyさん
02/12/07 16:40ID:???テキストファイルだと削除が大変。
漏れは
1) 該当スレのログファイルをオープン
2) ファイル全体を配列に読み込む
3) 該当行を配列から削除
4) 元ファイルに書き込む
5) スレッドインデックスファイルの「レス数」を変更
という風にやっています。
なんかいい方法ありませんかね。
0273workaholic
02/12/07 17:43ID:???その処理って、ナニでやってるの?Perl?
オレは基本的にJava野郎で、Perlはすでにウロ覚え状態です。
前にServlet(&JSP)で、個人的にソレっぽいもの作った時は、
TextFileとして記録されるLogのフォーマットを、HTTPのPOST内容っぽい
(つまりバウンダリ文字列で区分する)形で記録するようにしました。
それ専用の汎用ParserClassを作って、Servletで使用って感じで。
でも、結局TextFileに記録って時点で、あまり凝った事はやりづらいです
よね。
Stringの塊を整形して、取り出す時は部分取得して...。
それでもPerlの場合正規表現は最初からあったけど、JavaにRegExpが標準パッケージ
として含まれたのって最近だし...。
やっぱDBがイイすね。楽。
0274nobodyさん
02/12/08 18:03ID:???1) 該当スレのログファイルをオープン
2) 新しいファイルを作る
ループ{
1) ログファイルから次の「1行ダケ」読み込む
2) 該当行じゃなければ、新しいファイルに行を書込む
}
3) 元ファイルを削除
4) 新しいファイルを元ファイル名に変更
5) 「レス数」とやらを変更
とやるのが一般的だよっと。
世間の参考書は全行読むのが多いよなあ。
出版社にはこの辺チト配慮してほすぃ。
0275272
02/12/08 19:00ID:???どもです。
確かにメモリ食いまくりですね。
私も最初は、
1) インデックスファイルなど小さいモノはそのまま読み込む
2) 大きいモノは1行づつ読み込む
としていましたが、
掲示板の内容をhtmlに書き出すときに、
<html>から</html>まで全部変数に入れて、
一気に書き出す。
という方法をとってからは、ファイル全部読み込むことにしました。
まあ、ログサイズは大きくならないようにしてますけど。
0276272
02/12/08 19:06ID:???たとえば「最新10レスを表示」する場合、
最初の設計時には
1) 最新10レスが何番目のレス(start)から何番目のレス(end)なのかを計算
2) ログファイルをオープン
3) 1行づつ読んで、(1)のstartにきたら内容を配列に読み込む
endにきたらファイルを閉じる
という風に考えていたのですが、
よく考えてみれば、(1)を計算するにはファイルをあけて何行あるかを
feof まで1行づつ読み込むループをして調べなくてはならないですね。
それなら最初から全部読み込んでしまえ。となったわけです。
それからstart、endを計算して、いらない部分を配列から消すと。
0277nobodyさん
02/12/08 19:54ID:???例えば、PHPで初めの10行をとばすなら、
$begin = 10;
while($rec = fgets($FP,'12345') and $begin) {$begin--;}
while($rec = fgets($FP,'12345')) {読み込みたい件数だけ配列に入れてループ抜ける}
Perlかもしれないから一応補足。
while($rec = <FH>) {$begin--; last if(!$begin);}
while($rec = <FH>){読み込みたい件数だけ読み込む}
てな感じでやりなって。
HDへのアクセス時間短縮&メモリ空間になるでしょ。
0278nobodyさん
02/12/08 22:51ID:fkqPp+lS板毎にファイルを2つ作りそれぞれ
A:書き込みに番号を付け1行にまとめて追記
B:スレッドの構造を1スレ1行に書き込み番号を連ねて収納
スレッドを表示する時はB内の所望の行を読み、それに基づきA内の行を吐く。
age処理はBの行の順番を入れ替える。レス削除はBの該当番号を消し、
スレッド削除はBの1行を消す。Aは出来るだけいじらない。
lockの手順とかしっかりしないと嵌る。
SQLはいじった事ないけどねヽ( ´ー`)ノ
0279nobodyさん
02/12/08 23:02ID:???read.cgiではseekするようにしてる。
0280nobodyさん
02/12/08 23:11ID:???2chの発言内容って、htmlタグを全て排除してるじゃないですか。
でも、http://www.yahoo.co.jp
は、別画面が出てくるように、http://***.2ch.net/"""
はスレッドを表示する…
それと、>>n はスレ内のレスを直接表示…と、
よく出来ていると思うのですが、これに近い処理をするPHPやPerlの
ソースはありませんか。Javaで書いてみたいのですが…もしくは、
同じ処理をするJavaソースがあれば教えて下さい。。。
PHPとPerlはうろおぼえでGoogle探しても色々あって、どれがいいのか、はて、、です。
0281nobodyさん
02/12/08 23:19ID:???0283272
02/12/09 16:55ID:???レスありがとうございます。
while($rec = fgets($FP,'12345') and $begin) で and $begin という使い方は知りませんでした。
これは便利ですね。早速使ってみます。
さて、上述の、「ファイルを舐めないと総レス数がわからないので、たとえば「最近10レス」が
どのレスからどのレスまでを計算するには、ファイルを舐めないといけない」を
上手く解決する方法はありますか? この問題さえ解決できれば、必要な行だけを配列に
読み込む方式に移行できます。
よろしくお願いします。
0284nobodyさん
02/12/09 18:37ID:???じゃあ Shift_JIS + html もいいのかw
誰も変だと思わないのか?
0285nobodyさん
02/12/09 19:07ID:???何故最新10レスを計算する必要があるのかナスカの地上絵よりも謎だが、
ツリー形式掲示板なら、記事追加時に記事の情報を別に記録しておくとか
最新記事がファイルの先頭に記録するタイプなら、最初の10件だけ読み込む
2ch式掲示板なら、書込み時にftellして、読み込み時にfseekする
固定長ファーマットにしてランダムアクセスする手もある
そもそも277と279が答え出してるだろ
0287nobodyさん
02/12/09 22:54ID:???別スレでも話題になってるが♪のならこのへん。perlだけね。
ttp://www.onpuch.jp/files/onpuch.zip
0288nobodyさん
02/12/10 01:21ID:???いっぱいファイル開いたり閉じたり面倒で気が遠くなりそうだったんで
DBにしました。DBでも面倒なので放置気味ですが。
2ch型作っても、書き込み少なくてスカスカで見苦しいサイトがほとんどだし
もっと一般人向けの良いアイディアの掲示板ってないですかね。
0290nobodyさん
02/12/12 16:16ID:vEZAWx5Mまだ居るのか期待してageっ!
0291289
02/12/12 23:48ID:???というわけで、ついでに1年以上前のことですが質問させてください。
>>95で
>BbsThread は自分のスレッドの全メッセージにアクセスでき、
てことは、BbsThreadは自分のスレッドの全メッセージを配列で持っているの?
それともメッセージ取得メソッドが呼ばれるたびにファイルを開いて読み込むのかな?
でもそうだとDBを使うかファイルを使うかで変わってくるからMesseageStoreのように
MessageReaderを複数種類用意するってこと??
0293nobodyさん
02/12/13 08:59ID:zYYQGitahttp://news2.2ch.net/test/read.cgi/newsplus/1039690102/l50
グローバルビジョンは、すべてのWebページに勝手に掲示板を作成
できるシステムを開発した。http://www.petitmedia.com/
ここのシステム、PHP+ PostgreSQLでできてるらしい。
0294289
02/12/13 20:00ID:???レスありがとうございます。やはり後者でしたか。
ということはThreadStoreやThreadReaderも複数用意するってことかな。
ああ、電動ナナシ氏作成の掲示板見てみたいなぁ。
0295あし
02/12/20 12:19ID:7MV1a4/S0296nobodyさん
03/01/09 16:27ID:???前に掲示板のクラス設計途中までやったよね
0297289
03/01/13 11:39ID:???http://tohoho.wakusei.ne.jp/soft/wbord.htm
みたいな掲示板作ってみませんか?
これなら簡単そうだし。
>>92 のメッセージクラスも流用できそうだし。
0298山崎渉
03/01/15 13:41ID:???0299nobodyさん
03/02/22 02:01ID:???0300山崎渉
03/03/13 17:13ID:???0301山崎渉
03/04/17 12:24ID:???0302山崎渉
03/04/20 06:09ID:???( ^^ )< ぬるぽ(^^)
0303山崎渉
03/05/22 02:11ID:???0304山崎渉
03/05/28 17:15ID:???ピュ.ー ( ^^ ) <これからも僕を応援して下さいね(^^)。
=〔~∪ ̄ ̄〕
= ◎――◎ 山崎渉
0305ぴえ〜る ◆zowdz.TJ/Q
03/06/06 09:07ID:cm0eL4ze完成したけど、まだまだ付けたい機能あるし、バグチェック不十分だからソース公開してない。
http://earth.s13.xrea.com:8080/obb/index.php
ほいな
0306動画直リン
03/06/06 09:10ID:6EFZr+OJ0308ぴえ〜る ◆zowdz.TJ/Q
03/06/07 04:28ID:???フリーで配布するから、もし見たいなら待ってください。
まだ付けたい機能あるし、バグのチェックが不十分。量も多いし…(汗。
遅くなっても6月中には公開します。
0309ぴえ〜る ◆zowdz.TJ/Q
03/06/07 04:29ID:???0310山崎 渉
03/07/15 11:13ID:???__∧_∧_
|( ^^ )| <寝るぽ(^^)
|\⌒⌒⌒\
\ |⌒⌒⌒~| 山崎渉
~ ̄ ̄ ̄ ̄
0311nobodyさん
03/07/17 08:37ID:???.(・∀・ )
と )
ガッ Y /ノ
人 / )
__∧_..< > _/し'_
|(.. `Д´ V (_フ彡
|\⌒⌒⌒\←>>310
\ |⌒⌒⌒~|
0312山崎 渉
03/08/02 02:38ID:???( ^^ )< ぬるぽ(^^)
0313ぼるじょあ ◆ySd1dMH5Gk
03/08/02 05:22ID:???ピュ.ー ( ・3・) ( ^^ ) <これからも僕たちを応援して下さいね(^^)。
=〔~∪ ̄ ̄ ̄∪ ̄ ̄〕
= ◎――――――◎ 山崎渉&ぼるじょあ
0314山崎 渉
03/08/15 22:56ID:???│ ^ ^ │<これからも僕を応援して下さいね(^^)。
⊂| |つ
(_)(_) 山崎パン
0315nobodyさん
04/01/12 23:10ID:???(。・ヮ・);
゚し-J゚
0316nobodyさん
04/01/18 11:29ID:U9Y4F/+3サーバーによっては、書き込みデータに
"(半角ダブルクォーテーション)と'(半角シングルクォーテーション)と\(円マーク、バックスラッシュ)
の文字があると、これらの文字の前に勝手に\マークを挿入して記録してしまうんです。
" → \" ' →\' \→\\
こんな感じに。何が原因なんでしょうか?
0317316
04/01/18 12:00ID:U9Y4F/+3xrea.comサーバーだけは挿入されませんでした。
もちろん、挿入するような処理はスクリプト側では一切やってません。
0318316
04/01/18 12:29ID:U9Y4F/+3ttp://search.net-newbie.com/php/faq.using.html#faq.using.stripslashes
これが原因のようですね。
しかしfwrite関数で書き込みデータをファイルに書き出す直前に
$message = stripslashes($message);を入れてみましたがそれでも\が除去されません。
どうしてでしょうかね?
0320nobodyさん
04/01/18 17:52ID:???取れない事ないっしょ。。。
まずその処理を具体的にどうしてるのか出してみないとなんとも。
ってかここ質問すれじゃないし。
http://pc2.2ch.net/test/read.cgi/php/1073291978/l50
0322nobodyさん
05/02/16 20:26:17ID:N2q6vGgG君は
まず、htmlを覚えた方がいい。
なんだfont sizeって・・・・・
0324nobodyさん
05/02/17 09:23:15ID:???0326nobodyさん
05/02/20 03:38:05ID:???0327nobodyさん
05/02/25 23:26:12ID:???0328NetScape
05/02/27 00:21:12ID:???0329nobodyさん
05/02/28 20:35:01ID:???0330nobodyさん
05/03/06 20:55:44ID:???0331you
2005/09/24(土) 17:25:42ID:xejww78B0332nobodyさん
2005/10/04(火) 19:58:56ID:???view-source:http://pc8.2ch.net/php/
0333nobodyさん
2005/11/06(日) 11:25:46ID:szZvbyxNこのスレ終了 ーーーー
0334nobodyさん
2005/11/14(月) 18:15:04ID:???0335nobodyさん
2007/07/28(土) 03:05:25ID:???0336nobodyさん
2007/08/03(金) 16:40:33ID:???0337nobodyさん
2007/08/22(水) 21:21:05ID:???スレッド一覧表示は各ページ分割もうまくいっている。
が、各スレッドの表示画面作るって事になってから、めんどくさくなってしまった。
俺が先生に今からphpやります。
と言ったら今頃php?
と聞かれてしまった。
その言葉がまだよみがえる。
俺の夢はレンタルスペース管理人。そのために勉強している。
世の中はいろんな想いに溢れてんだ。
ネットの海を使って「伝えたい想いのある人」に協力したい。って思ってる。
今これを見て、多分多くは、「何と馬鹿な奴だろう」と思うだろうが、
書き込みするだけで、‥今からまたphpやってみようかな‥
って気分になれるんだ。
お前らも勉強がんばってくれ。
0338nobodyさん
2007/08/28(火) 22:06:14ID:???同じこと今日やったけど、そんなんスレッド表示用の型を1個用意して$_GETか何かでキー投げて
それでlogから記事引っ張ればいいんじゃね
0339nobodyさん
2008/04/06(日) 01:54:45ID:???0340nobodyさん
2008/05/29(木) 21:28:25ID:???お前何か勘違いしてないか?知識なんて使って減るもんじゃないから只だと思ってんだろ?
人に物を訊くってのがどういう事だか、自覚してる?
知識ってのはな、社会人に取って金と同じく貴重な財産なんだよ。使っても減らないけど、教えたら広まった分だけ価値が下がる。それを分けてくれって言ってんの自分でわかってる?
社会で必要とされる知識ってのはな、本になんか載ってない事ばかりなんだよ。全部人から人へ、直接のコミュニケーションを介して伝わって来たモンなんだ。
そういうノウハウを分けてもらう申し訳無さみたいな物が、伝わって来ないんだよ。お前の態度からは。
猿だって仲間から餌を分けてもらう時は申し訳無さそうな顔するんだよ。ヘラヘラ笑いながら近づいてったら殴り殺されんぞ。
猿だったら今頃とっくに死んでんだよお前。そんな態度で今まで。何回も言ったよな。謝る時は申し訳無さそうな顔をしろって。
そういう学校じゃ受けられない教育を受けておきながら、社会人を経験しなきゃ得られない知識を貰っておきながら、
何にも生かせてないんだよ今のお前は。学生のサークルごっこじゃないんだから。もっと四六時中危機感を持って生きてなきゃ駄目だよ。いい加減いつまで学生気分じゃ。
0341nobodyさん
2010/03/26(金) 05:26:15ID:???http://mbga.jp/.ge2d1857/_dia_list?u=14639062
…………
ごはんどきのプロフ詳細
…………
さすらいのパチラー今はペカッを修行中…足跡を見つけたら追っかけてチン○しゃぶりますよん(笑)
カキしてください板書きミニメどちらでもOKですゥ
お返しに一発ヤ○してアゲるから…いっぱい絡んでチョ!…パチでもスロでも必勝法伝授して下さい
プロフィール…地域:石川県…職業:奴隷ちゃん…趣味:パチとS○xと男漁りとジャニ…星座:ふたご座…血液型:AB型…誕生日:6月11日
0342nobodyさん
2010/08/27(金) 14:02:07ID:???plus01 ★ 管理人 ★ πナップル ★ きうい ★ mango+ ★ Fine ★
YV/TV ◆.Y./V..TV.
ジエン ◆2.14..sI1E
ネックス ◆Nex/RZxaHI
いざこざ ◆Nex/RZxaHI
いざこざ ◆Iza..hlnPI
いざ・・ ◆Iza..hlnPI
FuLL! ◆FuLL/FW.EQ
1206 ◆1206ePaU1M
ふぁー ◆fah/7D.Rkk
ふぁー 返し ◆fah/7D.Rkk
6分のろーぷら ◆LowPrice/6
労ぷら椅子 ◆LowPrice/6
【livevenus:20】 ◆LowPrice/6
6分のろーぷら ◆MAyUzEEE/E
6分のろーぷら ◆MYU/e0Imzi1E
6分のろーぷら ◆/UeVRo.Tv.
リック◆Lick/SPaQs
連投すみません ◆Lick/SPaQs
うずまき ◆vzqJXqubSg
リック ◆vzqJXqubSg
ナマコぞうすい ◆WgQ1EvIdds
【判明しているリモホ】
p6073-ipbffx01marunouchi.tokyo.ocn.ne.jp
z232163.dynamic.ppp.asahi-net.or.jp
w62.jp-t.ne.jp
cw43.razil.jp
0343nobodyさん
2011/10/09(日) 18:55:25.85ID:76HAGw4P0344nobodyさん
2011/11/19(土) 16:06:34.10ID:???0346nobodyさん
2013/03/27(水) 20:27:05.78ID:r73Jwrfn詳細希望
0347nobodyさん
2013/03/28(木) 05:14:42.00ID:???0348nobodyさん
2013/03/29(金) 14:53:58.03ID:g9p8VP00「PHPで掲示板とか・・・」って思ったけど、12年前なら納得・・・
つか、このスレどんだけ存続してるんだよ
0349nobodyさん
2013/09/12(木) 08:48:48.44ID:JOUyu+hF0350nobodyさん
2014/01/07(火) 13:38:25.70ID:???0351nobodyさん
2014/03/20(木) 10:49:54.47ID:???0352nobodyさん
2014/06/06(金) 21:05:48.57ID:???■ このスレッドは過去ログ倉庫に格納されています