X



せっかくだからPHPで掲示板作ってみませんか?

0001⊂(´ー`⊂⌒ヽつ
垢版 |
NGNG
Perl + CGI とか色々ありますけど、サーバ管理してるものとしては重いんですよ
結構回線食ってますんで、できれば軽い掲示板を使って欲しいです
0102電動ナナシ
垢版 |
2001/05/14(月) 04:04ID:???
>>96
なかなか時間がなくて、コードのフラグメント以上にならないよ・・・。
掲示板についてのノウハウもないから、どんなチェックをしたらいいか
分からないし。ある程度形になったら公開するね。

>>98
監督だなんて滅相もない。まあ気長に作ろう。
0105初期不良
垢版 |
2001/05/15(火) 01:13ID:qIx5vtWI
>>101
デザインパターンって全然知らないのよね。
多少 OOP も分かってきたことだし一通り読んでおこうかな...
0107電動ナナシ
垢版 |
2001/05/16(水) 15:32ID:???
>>106
様はつけないでいいよ。ちょっと気恥ずかしいから。
0108初期不良
垢版 |
2001/06/01(金) 05:36ID:scKj0Xko
>>99
こんなんもあった。
http://www.phpnuke.org/
ポータルかぁ。
自由度高めると最終的にはこんな感じなのかなぁ。
0110初期不良
垢版 |
2001/06/07(木) 14:26ID:v8J6N31c
ちょっとアルバイトで phpnuke いじってるんだけど、
ひどいコーディングだ。オブジェクト指向してないのはまだしも
コード自体がスパゲッティで混乱しまくってる。
何であんなにもてはやされているのかわからん。

やっぱりここでなんかまともなの作らなきゃなぁとか思ったり。
コードの再利用性を重点に置いたほうがいいと思う。
それができない言語じゃないと思うし。
とか思う。
と思う。
0112初期不良
垢版 |
2001/06/15(金) 15:48ID:qIx5vtWI
>>111
オブジェクト指向関連はどう変わったんだっけ?
俺としては関数の前方参照ができるとか、
jcode mbereg とかがもうすぐ統合されるとかの部分で
php4 がいいんじゃないかと思ってたんだが。

逆に php3 との互換性を持たせるにはどれくらい
考えなきゃいけないことがあるんだろ?
php3 への対応はそれ次第じゃないかな?
0113名無しさん@お腹いっぱい。
垢版 |
2001/06/15(金) 17:29ID:qNIf6Y6E
クラスわけわかめ。逝ってよし。
0114初期不良
垢版 |
2001/06/18(月) 01:00ID:vO5h5Je.
そんなこと言わずに >>113
避けられるわけないんだから
0118名無しさん@お腹いっぱい。
垢版 |
2001/07/03(火) 03:07ID:Sq8VmwMQ
いまphpであめぞう型の掲示版作っているのですが、
スレッドで構成された板を表示するクラスと
レスで構成されたスレッドを表示するクラスって、
相似ですよね。
こういう場合、掲示版を表示するクラスboard.classを作って、
それを継承したthread.classを作るのがよいのでしょうか。

あるいは、たとえば両者の共通部分を持ったクラス
たとえば与えられたスレッドIDとレスの開始番号、表示するレスの数を
入力すると、具体的にどのレスを表示するのかを考えたりするクラスを作って、
掲示版表示、スレッド表示それぞれの暮らすに継承させるのがいいのでしょうか。

同じように、ログを書き込むクラス、削除するクラスなどの継承関係についても悩んでいます。
0119電動ナナシ
垢版 |
2001/07/03(火) 17:58ID:???
>>118
ログの書き込み・削除を別クラスにする意義がいまいちよく分からない。

クラス設計に正解はないので、以下のはあくまで一つの案として捉えて
ほしい。

2ch というかあめぞう型掲示板で、意味のあるデータの最小単位はたぶん
各メッセージ。そしてメッセージのコンテナとしてのスレッドがあり、
スレッドのコンテナとしての板があり、板のコンテナとして BBS がある
という階層構造になっていると思われる。

そうだとすると、削除には実は 3 つの種類があることになる。つまり
メッセージの削除とスレッドの削除と板の削除。この削除は対象となる
オブジェクトのコンテナから当該オブジェクトへの参照をなくすことに
よって実現できる。そうだとすると
・メッセージ削除 = コンテナであるスレッドからメッセージへの参照を解除
・スレッド削除 = コンテナである板からスレッドへの参照を解除
・板削除 = コンテナである BBS からメッセージへの参照を解除
ということになる。つまり、削除機能は、上位のコンテナの備えるべき
責務として構成できる。

書き込みというのは、逆に下位要素のコンテナへの追加として表現できる。
ちょうど削除と逆の関係が成立する。

このように書き込み・削除はともに削除対象の上位のコンテナの責務と
して表現できるから、クラスを別にする意味はそれほどないと思う。
よって継承についてはそれほど悩む必要はないと思う。
0120電動ナナシ
垢版 |
2001/07/03(火) 18:11ID:???
>>118
それから継承は最近では「置換可能性があること」を意味すると言われて
いる(『C++ FAQ』を参照のこと)。例えば「鳥」クラスのサブクラス
として「鳩」クラスと「雀」クラスを定義するということは、「鳥」が
使われている部分を常に「鳩」や「雀」で置き換えることができることを
意味する。

> こういう場合、掲示版を表示するクラスboard.classを作って、
> それを継承したthread.classを作るのがよいのでしょうか。

あめぞう型の場合、メッセージをスレッドで、スレッドを板で置き換える
ことはできない。スレッドの中にスレッドを入れたりすることができない
ということ。そうだとすると、置換可能性がないからここで継承を使うのは
適切ではないと思われる。
0123名無しさん@お腹いっぱい。
垢版 |
2001/07/05(木) 17:16ID:FH4vSBdo
クラスについて教えてください!!(>o<)
0124名無しさん@お腹いっぱい。
垢版 |
2001/07/05(木) 17:34ID:???
1学年あたりの人数が多いとき、ひとつのクラスに纏めると
先生の目が行き届かないので、一クラス40人程度に分けます。
0126名無しさん@お腹いっぱい。
垢版 |
2001/07/06(金) 15:08ID:Bl7s3ZQQ
>>125
わざわざすいません。
ネタのつもりで書いたんですが…
0127ネタじゃないYO!
垢版 |
2001/07/06(金) 17:52ID:???
PHPってメソッドをオーバーライドするとき、スーパークラスの同名のメソッドを呼び出すことはできないんでしょうか?
サブクラスで細かいことをあれこれさせようとするとき、やりにくくてしょーがないんですが。
0128127
垢版 |
2001/07/06(金) 17:55ID:???
あ、スレ趣旨と関係ない質問してしまったですね。反省。
0129電動ナナシ
垢版 |
2001/07/06(金) 19:05ID:???
>>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";
?>
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";
?>
0131127
垢版 |
2001/07/10(火) 07:14ID:???
>>130 遅くなりました。m(_"_)m

 なるほどPHPでも"::"でアクセスできるんですね〜。
ありがとうございました。
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
>>131
ただしphp4以上ね
0137PHPはいいのかな?
垢版 |
2001/07/25(水) 20:00ID:tQkHrkGs
ハジメマシテ。ワタシハCGI初心者デス。
今、掲示板のような情報登録システムを作ろうと思っています。
http://world.gokinjo.net/
↑こんなかんじのやつです。

情報を登録してもらう件数が、1000件程度ならPerlで作ればいいのかなと思ってます。
しかし、1万〜10万件の登録数になったら、PHP+DBでないと検索が遅くなってしまうのかなと心配しています。

オライリーのプログラミングPerlを10ページほど読んだだけですが、できればPerlで作りたいと思っています。
もし、PHP+DBを使う場合は、Perlに比べてどのような優位性がありますか?
よくわからんのですが、Java+DBとPHP+DBではどんな違いがありますか?
(=プログラミングやメンテナンスの難易度、動作の速さ、コスト等)
4649
0139Thanks
垢版 |
2001/07/27(金) 11:32ID:Mtq49UWA
>> 138
ありがとうー。
0140名無しさん@お腹いっぱい。
垢版 |
2001/08/16(木) 00:52ID:???
PHP+MySQLで2ch型の掲示板を作ろうと思うのですが、テーブル1個では
無理ですかね。
MiniBBSタイプの追加していくだけのものならできるのですが、レス付きの
age sage のさせ方が思いつかなくて。
上のMiniBBSタイプの掲示板程度の簡単なものしか作ったことがなく
経験は浅いです。<この程度でMySQL使うなよーって言われそうですが
0141名無しさん@お腹いっぱい。
垢版 |
2001/08/16(木) 05:19ID:???
>>140
俺も初心者でよくわからんけどレスのテーブル作るのは?
メインのテーブルにスレッド更新時間フィールド作って
age の時だけそれを更新したら期待する動作になると思うけど。

age
insert into res (....)
update main set (updatetime=... where id=...)

sage
insert into res (....)

てか、これ以外の方法でいいの知ってる人
教えてほしいです。頭弱くて他に思いつかん・・・
0142名無しさん@お腹いっぱい。
垢版 |
2001/08/16(木) 14:22ID:gmLqYaug
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つでやれと言われたら、俺ならこうするだろうな。
0144名無しさん@お腹いっぱい。
垢版 |
2001/08/16(木) 16:38ID:???
>>142
それだと板名、スレ名は別テープルになってしまうのでは。
1テーブルにするにはvarchar型の板名、スレ名フィールドにしなければ。
でも order by の部分がどうなるのか複雑すぎて考えたくない。ナナシたんなら分かるかも。
0145名無しさん@お腹いっぱい。
垢版 |
2001/08/16(木) 16:55ID:1.nHpY.w
http://www.phorum.org
ここの真似すればいいんじゃない?ツリーだけど。。
ヘッドライン用テーブル作れば済むじゃん
0146名無しさん@お腹いっぱい。
垢版 |
2001/08/16(木) 17:11ID:???
>>144
板名とスレ名のことを忘れてた。
となると、板IDなんていらないのかな、1テーブルで全てを
処理しようとするなら。類似スレタイトルが出てくる可能性も
あるわけだから、スレIDは良いとしても、スレ名フィールドも
必要だね。

掲示板表示に関しては1つのSQL文で全ての処理を行うのは
無理じゃないかなぁ。特に2ch型の場合。
0147名無しさん@お腹いっぱい。
垢版 |
2001/08/16(木) 17:15ID:???
>>145
>>140は1つのテーブルで実現したいと言っているんだ、これが。
複数のテーブルを使った方が楽なのは2ch型の場合明白でしょう。
俺でもヘッドライン用、ログ用と最低でも2つは用意するね。
0148名無しさん@お腹いっぱい。
垢版 |
2001/08/17(金) 01:28ID:/R.1WTn.
横からすいませんPHPってフリーですか?
0150◆sUui9gxA
垢版 |
2001/08/17(金) 01:58ID:???
テーブル1個で十分じゃん
0151140
垢版 |
2001/08/17(金) 02:39ID:???
皆様ありがとうございました。
やはりテーブルは複数の方がよいようですね。
>>145 のPhorumが、とりあえず動いたので、ちょっと勉強して
真似してみます。
0154PantuHakePantu
垢版 |
2001/08/23(木) 19:20ID:???
>>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にする。
0158名無しさん@お腹いっぱい。
垢版 |
01/08/30 21:56ID:YzLgVA/.
掲示板の書き込み内容をデータベースに入れると楽だけど、
いまんとこnamazuで全文検索出来ないのが痛いんだよねえ。
みんなはその辺、どうしてるの?
0159名無しさん@お腹いっぱい。
垢版 |
01/08/30 23:31ID:M8F0Dr3g
なんだっけ。
MLに流れてたけど、テーブルの内容全部書き出してそれにインデクサかけるんだっけ?
0161名無しさん
垢版 |
01/09/02 03:19ID:zatSDIFM
>>160
違うよ。
JSPダヨ
0163名無しさん@お腹いっぱい。
垢版 |
01/09/05 00:52ID:0Ucsm3so
PHPで作ってみました。穴ありまくりそうなんでテスト
してみてちょ。
http://popee.gasuki.com/bbs/test/
0165名無しさん@お腹いっぱい。
垢版 |
01/09/05 13:23ID:h3vD9HpA
たいしたもんだのう。
0166163
垢版 |
01/09/05 15:57ID:kmB.nBhs
>>164
テストサンクス。
indexをPHPで吐いてるんで穴が恐い。
0167ちたん
垢版 |
01/09/05 16:25ID:5qOPNXQ6
>>163
(・∀・)イイ!
0168名無し
垢版 |
01/09/05 20:26ID:VpO1BIGg
>>166
>indexをPHPで吐いてるんで穴が恐い。

これってどういうことですか?
0169名無しさん@お腹いっぱい。
垢版 |
01/09/05 20:39ID:mVb.tFT2
>>168
掲示板トップをindex.phpで吐いてるってことでしょ?
0170E_ERROR
垢版 |
01/09/05 20:41ID:etg59saI
>>168
SSI呼出やらHTML・PHPタグの除去を上手く出来ないと怖い事に
なるってところでしょうね。

でも良い感じですね〜、163さん。
0171168
垢版 |
01/09/05 20:49ID:VpO1BIGg
>>170
なるほど、そういうことでしたか。
0172名無しさん@お腹いっぱい。
垢版 |
01/09/07 23:07ID:P553JcYI
インデックスを.phpで出力する意味は?
.htmlでいいじゃん。
0176名無しさん@お腹いっぱい。
垢版 |
01/09/08 12:56ID:KBW0zPWM
>>175
javaスクリプトで抜けばいいだろ。
.phpなんかでファイル吐いたらセ
キュリティーも糞も無くなる。
初心者は黙って名。藁
0178名無しさん@お腹いっぱい。
垢版 |
01/09/08 16:23ID:???
>>176
意味不明なんですが・・・
> .phpなんかでファイル吐いたらセキュリティーも糞も無くなる。
htmlファイルを吐いてブラウザにはそれを見せるのは危険ってこと?
って事は.phpで直接表示しろって事だよね?

> javaスクリプトで抜けばいいだろ。
ならPHPでクッキー使えばいいじゃん。
0180ちたん
垢版 |
01/09/08 21:30ID:9w.nIrBA
PHPってCGI使えてPHP3とか使えないとダメなの?
0182ちたん
垢版 |
01/09/08 22:44ID:9w.nIrBA
ごめん
PHPは手を出した事が無いんだけど
今いろいろ乗ってるサイトで調べたら
PHPは全くCGIとは別物なんだね
ribbon.toってとこのスペースにでも置くか
0183名無しさん@お腹いっぱい。
垢版 |
01/09/09 21:54ID:YAPKaUzk
厨房でスマソ。
indexにphpファイル使うのがヤヴァイってことですか?
ファイル名がindexでなければ大丈夫?
index.htm置いても関係なっしんぐですか?
ribbon.toのスペース借りたので、PHPも挑戦してみようと
思ってるんですが、さっぱり進みません。
0184163
垢版 |
01/09/09 23:05ID:FMpp59YY
>>183
index.htmlなら大丈夫。index.phpで吐いてphpタグの除去漏れが
あったりすると悲惨な攻撃を喰らう可能性が。
例えばディレクトリ内の全ファイル削除するphpスクリプトを書き
込まれたり。
0185名無しさん@お腹いっぱい。
垢版 |
01/09/09 23:29ID:wbHvU30k
>>184
どうやって書き込むんですか?
パスワードをハックするんですか?
0186名無しさん@お腹いっぱい。
垢版 |
01/09/09 23:40ID:FMpp59YY
>>185
あくまでPHPで掲示板やチャット作る場合ね。
フォームからの入力を受け付けないスクリプトなら
問題無いです。
0187185
垢版 |
01/09/09 23:45ID:wbHvU30k
フォームからスクリプト書き込まれたら危ないのか…。
知らなかった ありがとうございます。
0188名無しさん@お腹いっぱい。
垢版 |
01/09/09 23:56ID:???
PHPは使ったこと無いからあんま知らないけど、
たとえばフォームから$varにPHPコード入ってる入力受けたとして、
echo $var ってやったら $var に入ってるコードが実行されるの?
そんなわけないよね?
$var を直接unlinkやsystemやexecやevalとかしなけりゃ問題ないでしょ?
他には$varにSSIのコードが入っててPHPからhtml「ファイル」を
書き出すときに$varをそのまま埋め込んでそのhtmlにアクセスされた時に
SSIが実行されちゃうとかでしょ。
なんか勘違いしてる人ばっかりっぽい。
それとも俺が勘違い?
0189183
垢版 |
01/09/10 00:30ID:???
>184
早々レスありがとうございます!
自分がいかに厨房か身にしみました。
レンタルなんで、他のユーザに迷惑かけるのもアレだし、
もっと勉強してから設置します。
0191163
垢版 |
01/09/10 00:37ID:nli.P4co
あくまでクッキー使うとかの理由で「.php」ファイルを吐く
場合に限りってことですので。
0192188
垢版 |
01/09/10 00:47ID:???
あ、「.phpファイル」を吐くって話だったのか。やっと納得した。
そりゃ気を使わないといけないね。
「indexをPHPで吐いてる」
を単にindex.phpが動的にデータ読んでHTML生成してる
という意味だと思ったよ。
0193185
垢版 |
01/09/10 01:16ID:WNjUYDFQ
…。>>192と同じ事考えてました…。
phpがphpを吐く場合ですか。そりゃそうかも。
まだよく分かってないけど…。
0194163
垢版 |
01/09/10 12:00ID:???
2ちゃんタイプの掲示板だとログをMySQLとかのDBに持たせる
のと従来通りスレッド毎にファイルで持たせるのだとどっちが
効率いいんでしょう?
なんかDB化すると書き込み時にSELECT連発になりそうで不効
率なイメージがあるんだけどDB詳しくないので分かんないや。
0195名無しさん@お腹いっぱい。
垢版 |
01/09/10 13:45ID:RS6j19mI
漏れも知りたいage
0196ちたん
垢版 |
01/09/10 14:22ID:NewyOZz.
俺は公開を待つだけで何もしてやれないのが残念だ
0197名無しさん@お腹いっぱい。
垢版 |
01/09/10 14:23ID:unceqOvo
ちたんってFFDQ板にいる奴と同一人物か?
0198ちたん
垢版 |
01/09/10 14:26ID:NewyOZz.
おう>>197
0199名無しさん@お腹いっぱい。
垢版 |
01/09/10 14:52ID:LD3E6s7.
スレッドテープル、レステーブルの2テーブル作る感じで考えたけど、
スレ立て時にINSERT二回、レス時にSELECT,UPDATE,INSERT各一回
でできると思う。
0200163
垢版 |
01/09/10 15:23ID:RS6j19mI
>>198
インデックスページ吐くときに表示スレッド数だけのSELECTが必要
になりますね。
あと、全板のログが入り乱れたテーブルからSELECTで必要な発言持
ってくるのって凄い効率悪そうに思えるんですけど、レスの数が膨大
になった場合の不可なんかはどんなもんなんでしょう?
0201163
垢版 |
01/09/10 15:24ID:???
ミスった。↑のは>>199さんへ。
レスを投稿する


ニューススポーツなんでも実況