せっかくだからPHPで掲示板作ってみませんか?
Perl + CGI とか色々ありますけど、サーバ管理してるものとしては重いんですよ 結構回線食ってますんで、できれば軽い掲示板を使って欲しいです >>96 なかなか時間がなくて、コードのフラグメント以上にならないよ・・・。 掲示板についてのノウハウもないから、どんなチェックをしたらいいか 分からないし。ある程度形になったら公開するね。 >>98 監督だなんて滅相もない。まあ気長に作ろう。 クラスについてくわしく書いてあるサイト知りませんか? >>101 デザインパターンって全然知らないのよね。 多少 OOP も分かってきたことだし一通り読んでおこうかな... >>106 様はつけないでいいよ。ちょっと気恥ずかしいから。 >>99 こんなんもあった。 http://www.phpnuke.org/ ポータルかぁ。 自由度高めると最終的にはこんな感じなのかなぁ。 ちょっとアルバイトで phpnuke いじってるんだけど、 ひどいコーディングだ。オブジェクト指向してないのはまだしも コード自体がスパゲッティで混乱しまくってる。 何であんなにもてはやされているのかわからん。 やっぱりここでなんかまともなの作らなきゃなぁとか思ったり。 コードの再利用性を重点に置いたほうがいいと思う。 それができない言語じゃないと思うし。 とか思う。 と思う。 >>110 やっぱOOPするには、php4の方がいいですか? 文字コードUTF8を使いたい関係でphp3+i18nで野郎と思ってるのですが。 >>111 オブジェクト指向関連はどう変わったんだっけ? 俺としては関数の前方参照ができるとか、 jcode mbereg とかがもうすぐ統合されるとかの部分で php4 がいいんじゃないかと思ってたんだが。 逆に php3 との互換性を持たせるにはどれくらい 考えなきゃいけないことがあるんだろ? php3 への対応はそれ次第じゃないかな? そんなこと言わずに >>113 避けられるわけないんだから いまphpであめぞう型の掲示版作っているのですが、 スレッドで構成された板を表示するクラスと レスで構成されたスレッドを表示するクラスって、 相似ですよね。 こういう場合、掲示版を表示するクラスboard.classを作って、 それを継承したthread.classを作るのがよいのでしょうか。 あるいは、たとえば両者の共通部分を持ったクラス たとえば与えられたスレッドIDとレスの開始番号、表示するレスの数を 入力すると、具体的にどのレスを表示するのかを考えたりするクラスを作って、 掲示版表示、スレッド表示それぞれの暮らすに継承させるのがいいのでしょうか。 同じように、ログを書き込むクラス、削除するクラスなどの継承関係についても悩んでいます。 >>118 ログの書き込み・削除を別クラスにする意義がいまいちよく分からない。 クラス設計に正解はないので、以下のはあくまで一つの案として捉えて ほしい。 2ch というかあめぞう型掲示板で、意味のあるデータの最小単位はたぶん 各メッセージ。そしてメッセージのコンテナとしてのスレッドがあり、 スレッドのコンテナとしての板があり、板のコンテナとして BBS がある という階層構造になっていると思われる。 そうだとすると、削除には実は 3 つの種類があることになる。つまり メッセージの削除とスレッドの削除と板の削除。この削除は対象となる オブジェクトのコンテナから当該オブジェクトへの参照をなくすことに よって実現できる。そうだとすると ・メッセージ削除 = コンテナであるスレッドからメッセージへの参照を解除 ・スレッド削除 = コンテナである板からスレッドへの参照を解除 ・板削除 = コンテナである BBS からメッセージへの参照を解除 ということになる。つまり、削除機能は、上位のコンテナの備えるべき 責務として構成できる。 書き込みというのは、逆に下位要素のコンテナへの追加として表現できる。 ちょうど削除と逆の関係が成立する。 このように書き込み・削除はともに削除対象の上位のコンテナの責務と して表現できるから、クラスを別にする意味はそれほどないと思う。 よって継承についてはそれほど悩む必要はないと思う。 >>118 それから継承は最近では「置換可能性があること」を意味すると言われて いる(『C++ FAQ』を参照のこと)。例えば「鳥」クラスのサブクラス として「鳩」クラスと「雀」クラスを定義するということは、「鳥」が 使われている部分を常に「鳩」や「雀」で置き換えることができることを 意味する。 > こういう場合、掲示版を表示するクラスboard.classを作って、 > それを継承したthread.classを作るのがよいのでしょうか。 あめぞう型の場合、メッセージをスレッドで、スレッドを板で置き換える ことはできない。スレッドの中にスレッドを入れたりすることができない ということ。そうだとすると、置換可能性がないからここで継承を使うのは 適切ではないと思われる。 掲示板はど〜でもいいがナナシたんのもっと蘊蓄話聞きたいage >>121 電動さんの蘊蓄をうまく引き出すような質問をすべし 1学年あたりの人数が多いとき、ひとつのクラスに纏めると 先生の目が行き届かないので、一クラス40人程度に分けます。 >>125 わざわざすいません。 ネタのつもりで書いたんですが… PHPってメソッドをオーバーライドするとき、スーパークラスの同名のメソッドを呼び出すことはできないんでしょうか? サブクラスで細かいことをあれこれさせようとするとき、やりにくくてしょーがないんですが。 あ、スレ趣旨と関係ない質問してしまったですね。反省。 >>127 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"; ?> やばい、違うのを書いてしまった。正しくはこちら。 <?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"; ?> >>130 遅くなりました。m(_"_)m なるほどPHPでも"::"でアクセスできるんですね〜。 ありがとうございました。 ♪ ♪ ♪ ♪ ∧∧ ∧∧ ∧∧ ∧∧♪ / ̄ ̄ ̄ ̄ ̄ ( ゚Д゚) ( ゚Д゚) .( ゚Д゚) ( ゚Д゚) < カステラ一番 電波は2ちゃん .⊂ つ⊂ つ⊂ つ⊂ つ | 3日はモナーの誕生日♪ 〜( つノ〜( つノ〜( つノ〜( つノ . \_____ (/ (/ (/ (/ ♪ ♪ ♪ ♪ ∧∧ ∧∧ ∧∧ ∧∧♪ / ̄ ̄ ̄ ̄ ̄ ( ゚Д゚) ( ゚Д゚) .( ゚Д゚) ( ゚Д゚) < カステラ一番 電波は2ちゃん .⊂ つ⊂ つ⊂ つ⊂ つ | 3日はモナーの誕生日♪ 〜( つノ〜( つノ〜( つノ〜( つノ . \_____ (/ (/ (/ (/ ♪ ♪ ♪ ♪ ∧∧ ∧∧ ∧∧ ∧∧♪ / ̄ ̄ ̄ ̄ ̄ ( ゚Д゚) ( ゚Д゚) .( ゚Д゚) ( ゚Д゚) < カステラ一番 電波は2ちゃん .⊂ つ⊂ つ⊂ つ⊂ つ | 3日はモナーの誕生日♪ 〜( つノ〜( つノ〜( つノ〜( つノ . \_____ (/ (/ (/ (/ ♪ ♪ ♪ ♪ ∧∧ ∧∧ ∧∧ ∧∧♪ / ̄ ̄ ̄ ̄ ̄ ( ゚Д゚) ( ゚Д゚) .( ゚Д゚) ( ゚Д゚) < カステラ一番 電波は2ちゃん .⊂ つ⊂ つ⊂ つ⊂ つ | 3日はモナーの誕生日♪ 〜( つノ〜( つノ〜( つノ〜( つノ . \_____ (/ (/ (/ (/ ハジメマシテ。ワタシハCGI初心者デス。 今、掲示板のような情報登録システムを作ろうと思っています。 http://world.gokinjo.net/ ↑こんなかんじのやつです。 情報を登録してもらう件数が、1000件程度ならPerlで作ればいいのかなと思ってます。 しかし、1万〜10万件の登録数になったら、PHP+DBでないと検索が遅くなってしまうのかなと心配しています。 オライリーのプログラミングPerlを10ページほど読んだだけですが、できればPerlで作りたいと思っています。 もし、PHP+DBを使う場合は、Perlに比べてどのような優位性がありますか? よくわからんのですが、Java+DBとPHP+DBではどんな違いがありますか? (=プログラミングやメンテナンスの難易度、動作の速さ、コスト等) 4649 PHP+MySQLで2ch型の掲示板を作ろうと思うのですが、テーブル1個では 無理ですかね。 MiniBBSタイプの追加していくだけのものならできるのですが、レス付きの age sage のさせ方が思いつかなくて。 上のMiniBBSタイプの掲示板程度の簡単なものしか作ったことがなく 経験は浅いです。<この程度でMySQL使うなよーって言われそうですが >>140 俺も初心者でよくわからんけどレスのテーブル作るのは? メインのテーブルにスレッド更新時間フィールド作って age の時だけそれを更新したら期待する動作になると思うけど。 age insert into res (....) update main set (updatetime=... where id=...) sage insert into res (....) てか、これ以外の方法でいいの知ってる人 教えてほしいです。頭弱くて他に思いつかん・・・ 1つのテーブルでも出来ると思うけど、RDBMSの良さを生かすには >>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つでやれと言われたら、俺ならこうするだろうな。 >>142 それだと板名、スレ名は別テープルになってしまうのでは。 1テーブルにするにはvarchar型の板名、スレ名フィールドにしなければ。 でも order by の部分がどうなるのか複雑すぎて考えたくない。ナナシたんなら分かるかも。 http://www.phorum.org ここの真似すればいいんじゃない?ツリーだけど。。 ヘッドライン用テーブル作れば済むじゃん >>144 板名とスレ名のことを忘れてた。 となると、板IDなんていらないのかな、1テーブルで全てを 処理しようとするなら。類似スレタイトルが出てくる可能性も あるわけだから、スレIDは良いとしても、スレ名フィールドも 必要だね。 掲示板表示に関しては1つのSQL文で全ての処理を行うのは 無理じゃないかなぁ。特に2ch型の場合。 >>145 >>140 は1つのテーブルで実現したいと言っているんだ、これが。 複数のテーブルを使った方が楽なのは2ch型の場合明白でしょう。 俺でもヘッドライン用、ログ用と最低でも2つは用意するね。 皆様ありがとうございました。 やはりテーブルは複数の方がよいようですね。 >>145 のPhorumが、とりあえず動いたので、ちょっと勉強して 真似してみます。 >>140 テーブル一個で済ますのはあまりよろしくないね。 分割するがよろし。板一個に付き一個。 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にする。 >>154 板ごとにテーブル作る必要ないんじゃないの? その方が邪魔臭い。板NOを作れば済むと思うぞ。 PHPの掲示板を探していたら、 http://www.runser.jp/softlib.html こんなのがあった。動いているのがこっち http://www.runser.jp/bbs.php 元々はDBで動いていたのを、使わないように改造したらしい。 PHP+MySQLのtreeBBSはどんなテーブルがよいのでしょうか http://www.phorum.org/ の掲示板だとレス付いてもあがらないし 掲示板の書き込み内容をデータベースに入れると楽だけど、 いまんとこnamazuで全文検索出来ないのが痛いんだよねえ。 みんなはその辺、どうしてるの? なんだっけ。 MLに流れてたけど、テーブルの内容全部書き出してそれにインデクサかけるんだっけ? PHPで作ってみました。穴ありまくりそうなんでテスト してみてちょ。 http://popee.gasuki.com/bbs/test/ お邪魔しました、何気に管理部のセッション管理がphpっすね。 横漏れチェックはOKでした (w >>164 テストサンクス。 indexをPHPで吐いてるんで穴が恐い。 >>166 >indexをPHPで吐いてるんで穴が恐い。 これってどういうことですか? >>168 掲示板トップをindex.phpで吐いてるってことでしょ? >>168 SSI呼出やらHTML・PHPタグの除去を上手く出来ないと怖い事に なるってところでしょうね。 でも良い感じですね〜、163さん。 インデックスを.phpで出力する意味は? .htmlでいいじゃん。 >>172 .phpにすればクッキーが使える。 SSIは動かないだろ >>175 javaスクリプトで抜けばいいだろ。 .phpなんかでファイル吐いたらセ キュリティーも糞も無くなる。 初心者は黙って名。藁 >>176 >.phpなんかでファイル吐いたらセ >キュリティーも糞も無くなる。 詳しく知りたいのですが... >>176 意味不明なんですが・・・ > .phpなんかでファイル吐いたらセキュリティーも糞も無くなる。 htmlファイルを吐いてブラウザにはそれを見せるのは危険ってこと? って事は.phpで直接表示しろって事だよね? > javaスクリプトで抜けばいいだろ。 ならPHPでクッキー使えばいいじゃん。 PHPってCGI使えてPHP3とか使えないとダメなの? ごめん PHPは手を出した事が無いんだけど 今いろいろ乗ってるサイトで調べたら PHPは全くCGIとは別物なんだね ribbon.toってとこのスペースにでも置くか 厨房でスマソ。 indexにphpファイル使うのがヤヴァイってことですか? ファイル名がindexでなければ大丈夫? index.htm置いても関係なっしんぐですか? ribbon.toのスペース借りたので、PHPも挑戦してみようと 思ってるんですが、さっぱり進みません。 >>183 index.htmlなら大丈夫。index.phpで吐いてphpタグの除去漏れが あったりすると悲惨な攻撃を喰らう可能性が。 例えばディレクトリ内の全ファイル削除するphpスクリプトを書き 込まれたり。 >>184 どうやって書き込むんですか? パスワードをハックするんですか? >>185 あくまでPHPで掲示板やチャット作る場合ね。 フォームからの入力を受け付けないスクリプトなら 問題無いです。 フォームからスクリプト書き込まれたら危ないのか…。 知らなかった ありがとうございます。 PHPは使ったこと無いからあんま知らないけど、 たとえばフォームから$varにPHPコード入ってる入力受けたとして、 echo $var ってやったら $var に入ってるコードが実行されるの? そんなわけないよね? $var を直接unlinkやsystemやexecやevalとかしなけりゃ問題ないでしょ? 他には$varにSSIのコードが入っててPHPからhtml「ファイル」を 書き出すときに$varをそのまま埋め込んでそのhtmlにアクセスされた時に SSIが実行されちゃうとかでしょ。 なんか勘違いしてる人ばっかりっぽい。 それとも俺が勘違い? >184 早々レスありがとうございます! 自分がいかに厨房か身にしみました。 レンタルなんで、他のユーザに迷惑かけるのもアレだし、 もっと勉強してから設置します。 俺も使ったこと無いからあんま知らないけど それが出来るのがphpなのでわ? $varは汚れているってやつ あくまでクッキー使うとかの理由で「.php」ファイルを吐く 場合に限りってことですので。 あ、「.phpファイル」を吐くって話だったのか。やっと納得した。 そりゃ気を使わないといけないね。 「indexをPHPで吐いてる」 を単にindex.phpが動的にデータ読んでHTML生成してる という意味だと思ったよ。 …。>>192 と同じ事考えてました…。 phpがphpを吐く場合ですか。そりゃそうかも。 まだよく分かってないけど…。 2ちゃんタイプの掲示板だとログをMySQLとかのDBに持たせる のと従来通りスレッド毎にファイルで持たせるのだとどっちが 効率いいんでしょう? なんかDB化すると書き込み時にSELECT連発になりそうで不効 率なイメージがあるんだけどDB詳しくないので分かんないや。 スレッドテープル、レステーブルの2テーブル作る感じで考えたけど、 スレ立て時にINSERT二回、レス時にSELECT,UPDATE,INSERT各一回 でできると思う。 >>198 インデックスページ吐くときに表示スレッド数だけのSELECTが必要 になりますね。 あと、全板のログが入り乱れたテーブルからSELECTで必要な発言持 ってくるのって凄い効率悪そうに思えるんですけど、レスの数が膨大 になった場合の不可なんかはどんなもんなんでしょう? read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる