せっかくだからPHPで掲示板作ってみませんか?
>>100 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 クラスでアクセス権を保持するように責務を追加 ということで実現できるかな。 >>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で必要な発言持 ってくるのって凄い効率悪そうに思えるんですけど、レスの数が膨大 になった場合の不可なんかはどんなもんなんでしょう? >>200 ファイルでやったら表示スレッド数だけのファイルを開いて閉じてを 繰り返さなければダメですよね?それよりは速いとおもう。 きちんとレステーブルにスレッドIDのフィールド作って インデックス張っておけば問題ないレベルでしょう。 >>202 も出来る。 >>202 PEAR使うとOOPが、でけそう気配だ。 スレッドごとにテーブル作ってテーブルの数がいっぱいになるのと テーブル一つに全スレッド放り込むのとどっちがいいですか。 あるいは板ごとにテーブル作って(以下同文) ようするにテーブルはいっぱい作らない方がいい? PHPのオブジェクト指向には、あんまり期待できなさそうな。(^-^; PerlのOOと似たようなもんかな。。 >>205 とりあえずスレッド一覧とレス格納用のテーブル一つずつ作って PHP+MySQLでやってみました。今んところ問題ないみたい。 http://popee.gasuki.com/bbs_db/test/ >>207 ageってどうやってんの? 書き込まれたらスレッドの順番書いてあるフィールド書き換えてるの か?何か効率悪っぽいな。ファイルの方がいいんじゃねぇ? スレッド一覧テーブルにDATETIME型とかのフィールド作って ageの時は現在時刻入れておいて降順で並べればよいと思われ。 ぜんぶPHP+MySQLですよ。 さらにDHTMLをかました掲示板もあります。 興味のある方は見てください。 http://www1.development-network.net/ ~ken/index.php >>211 のようなレンタルの場合は、MySQLのライセンス料の支払は必要? http://www1.development-network.net/ ~ken//reg/profeel.php?name=KEn 綴り、ハァハァ…… なんかからかわれてますね〜 このサーバーは友達がADSLで構築しています。 \200/月 で使用できます。 >>214 MySQLってフリーだからいらないですよ。 PHPだと文法エラー等がある場合、エラーメッセージが出ると聞いたのだが、 そんなもんは出なくて、 白紙(IEでソース見るとレンタルサーバの広告のみ)しか出ない。 これはいったい何のエラーなんだか。 >>221 サーバによっちゃエラーメッセージでないよ。 ファーストキスはエラー吐く。 しかし奴はECUで書かなないとあかんのでめんどいのー。 ところでレンタルスペースのミルトクラブはトップからphpなのはいいが、 エラーメッセージさらしっぱなしでひじょうにみっともないんだが…。 直す気ないのか? PHPの掲示板でお勧めのLOCKあります? $fp = fopen ("$logfile","a"); flock($fp,2); fputs($fp, $hoge); flock($fp,3); fclose($fp); で効きますか? 配布などは考えてません。 >>229 さんではありませんが、私も良いLOCK方法を知りたいっす。 Cのflockと同じものなのか、それともPHPらしくもちょっと実用的にっていうか 229さんが書いたコードでオッケーな感じになっているのか……。 PHPのflockの中身を知りたいです。 あ。ソースを見ればいいのか。逝ってきます……。 PHP初心者だけどPHPを学習しつつ スレッドフロート式掲示板の開発を進めている。 学習しながらなんで非常に時間掛かってるけど。 只今の進行状況:3%ってとこか? でもPerlの心得はあるからそれほど苦労はしてないけどね。 PHP+RDBMSを使ったツリー型のBBSで、 ツリー表示をする際のアルゴリズムとデータベースの構成を説明して貰えませんかのう。 PHP-Nukeのソース読んだけど理解出来ない...(・ A ・) ・[ 1 ] 逝ってヨシ ・[ 2 ] あぼーん ・[ 4 ] あぼーん ・[ 3 ] ワショーイ ↑こういう表示がスマートにできるようなアルゴリズム.....。 レスのテーブルに子レスIDのデータを持たせようとすると、 複数のレスがついた場合を考えて配列にしなきゃいけない。 レスのテーブルに親レスIDのデータを持たせると、 こんどは描画の際に面倒。 あとはレスに階層の深さテーブルを持たせるとか、 子レスの「数」を親レスに持たせるとか...。 ああ面倒。 php-nukeはいったいどうやって。 ttp://phorum.org/support/list.php?f=1&collapse=0 >>234 データベースは知らんが W1・新規スレッドの>>1 とそれに対するレスを区別しないで時間順にテーブルにぶち込む。 その際、ユニークなメッセージIDを振る。 W2・レスはその返信先のIDをリファレンスとして保持、>>1 は空欄のまま。 R1・書き出し時にリファレンスの項目を参照して1を取り出す。(時間順に並んでいれば普通は最初だが) R2・1のメッセージIDでリファレンスを検索。一致するものを配列として取り出す。見つからなければreturn。 R3・とりだした配列の要素へR2の手順を実行。 な感じじゃないか? 要はただの再帰呼び出しだが。 ウチは、IDとか親記事のIDと階層の数字(*)を持たせて 再帰呼び出ししてます。 ・[ 1 ] 逝ってヨシ *0 ・[ 2 ] あぼーん *1 ・[ 4 ] あぼーん*2 ・[ 3 ] ワショーイ *1 作るのと関係無いんだけど、 http://bbs.rakusagashi.com/free/sample/bbs.php?db=sample ↑の掲示板、メールアドレス入力するところに '>'>'>">">'>">'><IMG src='mailto:unko.ne.jp'><xmp> って入力して投稿するとローカルでのみ、凄い事になるんだけど・・・。 他にもこの掲示板にセキュリティホールありますか? 教えて君でスマソ。 (´-`).。oO(>>163 はどこに逝ってしまったんだろう…?) bbsxml.php$B$H$+$G7G<(HD$,(BXML$B=PNO$5$l$k$H$J$*M3(B 2ちゃんねる風の掲示板はどの様に作ればいいのですか? 教えて下さい。あと、素材があったら貼っといて下さい。 >>252 さっさと責任取ってくれんか?クソ人間。 2chの掲示板は何を使ってますか? http://pc.2ch.net/test/read.cgi/php/1037459580/l50 各位。 PHPで掲示板なら昔作ったけど。ソースいる? >>253 >PHPで掲示板なら昔作ったけど。ソースいる? 俺も作った。好感しようか(w 簡単な掲示板ならperlでかくより、PHPのほが楽じゃないすか? 便利そうな関数がごまんとあるし(perlでも多いと思ったのに・・) データベースをそこそこさわり始めるとある程度の事までは わかるんだけど、バキュームとかバックアップやらの事が出てきはじめると ワケワカメになる。 掲示板とかでDB使うとそうとうグシャグシャな状態になりそうな気が するんだが、大丈夫なもんなのか? 容量の問題もあるし・・・ もし、2ch型の掲示板をPHP+RDBMで作る場合、 テーブルの構造はどんな感じになるんだろうか? PHPの側からテーブル作ったりできんのか? なんかイメージするにスレッド毎にテーブルがあった方が スッキリ管理しやすいようにおもうんだが、、、、、 でも、それじゃぁDB使う意味ないのか? まぁ、厨房の独り言でし。 >便利そうな関数がごまんとあるし PHPに5万も標準の関数はありませんとか言ってみるテスト >もし、2ch型の掲示板をPHP+RDBMで作る場合、 >テーブルの構造はどんな感じになるんだろうか? 1つの板につきスレッドテーブルと記事テーブルを各1個 >1つの板につきスレッドテーブルと記事テーブルを各1個 そんだけでいいんだ。そうだよなぁDBでしかもリレーショナルだもんね(ワ。 漏れがPerlで作ったBBSはしこたまファイルが出来るから dataやらのディレクトリをのぞく度に鬱になる。 >>262 それは、もしかしてPerl + CGIの事ですか? >>262 + = de Perl + CGI = Perl de CGI php+MySQLで掲示板作っているけど、スレッドテーブルなんか使わないなぁ。 親スレで検索すればいいだけじゃん。テーブルを分ける必要は無いと思うのだが。。 でも、想像してみるに、記事用のテーブルはいろんな スレッドのデータがグチャグチャに入ってて、そのグチャグチャを DBは一生懸命検索しなきゃいけないわけでしょ。 もし、1スレッドに1テーブルだと検索する手間が省けてかなり 早くなりそうな気がするんだが・・・・。 メンテ的にも1掲示板で持てるスレッド数が決まっている場合、 さくっとテーブルの削除ができる。 ところでスレッドの順位のテーブルも必要なんじゃないか? 親スレを示すフィールドと、スレッドの順番を示すフィールドがあれば、ソート出来るじゃん。 検索し、並び替えるのが得意なDBにとって、順番やスレッドがぐちゃぐちゃなんてたいした手間じゃないと思うけどな。 >262 まさか、perl == CGI とか思ってやしないよな。 と煽り返してみる。 必要以上にテーブル分けして、外部ジョイーンとか連発しなければ遅くはならないとYO。 あと、like で or な検索連発してみたり(しないか)。 つーか、BBS程度のシステムなのに、絶賛稼動中なロジックの中で create table するのって、 ちょっと正気の沙汰とは思えない、とか。 1スレ=1テーブルって、どういう設計よ。 >つーか、BBS程度のシステムなのに、絶賛稼動中なロジックの中で create table するのって、 >ちょっと正気の沙汰とは思えない 禿同 ありがちな例: "板コード"をpKeyにして、"スレコード"で別テーブルぶらさげて、 他になんか文言とか付随データをVARCHARでいくつか付けておいて、 その後その別テーブル上に「書き込みindex」をキー、スレコードはfKeyで、 カキコの中身はVARCHAR(256)位でまとめればいいんじゃないのかな。 DBだと記事の削除とか楽だからいいよね。 テキストファイルだと削除が大変。 漏れは 1) 該当スレのログファイルをオープン 2) ファイル全体を配列に読み込む 3) 該当行を配列から削除 4) 元ファイルに書き込む 5) スレッドインデックスファイルの「レス数」を変更 という風にやっています。 なんかいい方法ありませんかね。 >>272 さん。 その処理って、ナニでやってるの?Perl? オレは基本的にJava野郎で、Perlはすでにウロ覚え状態です。 前にServlet(&JSP)で、個人的にソレっぽいもの作った時は、 TextFileとして記録されるLogのフォーマットを、HTTPのPOST内容っぽい (つまりバウンダリ文字列で区分する)形で記録するようにしました。 それ専用の汎用ParserClassを作って、Servletで使用って感じで。 でも、結局TextFileに記録って時点で、あまり凝った事はやりづらいです よね。 Stringの塊を整形して、取り出す時は部分取得して...。 それでもPerlの場合正規表現は最初からあったけど、JavaにRegExpが標準パッケージ として含まれたのって最近だし...。 やっぱDBがイイすね。楽。 >>272 1) 該当スレのログファイルをオープン 2) 新しいファイルを作る ループ{ 1) ログファイルから次の「1行ダケ」読み込む 2) 該当行じゃなければ、新しいファイルに行を書込む } 3) 元ファイルを削除 4) 新しいファイルを元ファイル名に変更 5) 「レス数」とやらを変更 とやるのが一般的だよっと。 世間の参考書は全行読むのが多いよなあ。 出版社にはこの辺チト配慮してほすぃ。 >>274 どもです。 確かにメモリ食いまくりですね。 私も最初は、 1) インデックスファイルなど小さいモノはそのまま読み込む 2) 大きいモノは1行づつ読み込む としていましたが、 掲示板の内容をhtmlに書き出すときに、 <html>から</html>まで全部変数に入れて、 一気に書き出す。 という方法をとってからは、ファイル全部読み込むことにしました。 まあ、ログサイズは大きくならないようにしてますけど。 続き たとえば「最新10レスを表示」する場合、 最初の設計時には 1) 最新10レスが何番目のレス(start)から何番目のレス(end)なのかを計算 2) ログファイルをオープン 3) 1行づつ読んで、(1)のstartにきたら内容を配列に読み込む endにきたらファイルを閉じる という風に考えていたのですが、 よく考えてみれば、(1)を計算するにはファイルをあけて何行あるかを feof まで1行づつ読み込むループをして調べなくてはならないですね。 それなら最初から全部読み込んでしまえ。となったわけです。 それからstart、endを計算して、いらない部分を配列から消すと。 272は始めから改善する気がなさそうな気もするけど、一応レスってみる事に。 例えば、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へのアクセス時間短縮&メモリ空間になるでしょ。 うちで作ったスレ式掲示板はこんなかんじ。 板毎にファイルを2つ作りそれぞれ A:書き込みに番号を付け1行にまとめて追記 B:スレッドの構造を1スレ1行に書き込み番号を連ねて収納 スレッドを表示する時はB内の所望の行を読み、それに基づきA内の行を吐く。 age処理はBの行の順番を入れ替える。レス削除はBの該当番号を消し、 スレッド削除はBの1行を消す。Aは出来るだけいじらない。 lockの手順とかしっかりしないと嵌る。 SQLはいじった事ないけどねヽ( ´ー`)ノ 漏れの作った2ch型はレス毎の位置を記録したのを別に持っていて、 read.cgiではseekするようにしてる。 あの、Java野郎なんですけど、 2chの発言内容って、htmlタグを全て排除してるじゃないですか。 でも、http://www.yahoo.co.jp は、別画面が出てくるように、http://***.2ch.net/ """ はスレッドを表示する… それと、>>n はスレ内のレスを直接表示…と、 よく出来ていると思うのですが、これに近い処理をするPHPやPerlの ソースはありませんか。Javaで書いてみたいのですが…もしくは、 同じ処理をするJavaソースがあれば教えて下さい。。。 PHPとPerlはうろおぼえでGoogle探しても色々あって、どれがいいのか、はて、、です。 read.cgi(pl)とread.phpは17氏のスクリプトについてたが。 >>281 17にアクセスしても404なんですが、、、どこかに転がっていませんか。 googleでさがしたんですが、ウトゥ- >>277 レスありがとうございます。 while($rec = fgets($FP,'12345') and $begin) で and $begin という使い方は知りませんでした。 これは便利ですね。早速使ってみます。 さて、上述の、「ファイルを舐めないと総レス数がわからないので、たとえば「最近10レス」が どのレスからどのレスまでを計算するには、ファイルを舐めないといけない」を 上手く解決する方法はありますか? この問題さえ解決できれば、必要な行だけを配列に 読み込む方式に移行できます。 よろしくお願いします。 Perl + CGIって何だよ(藁 じゃあ Shift_JIS + html もいいのかw 誰も変だと思わないのか? >>283 何故最新10レスを計算する必要があるのかナスカの地上絵よりも謎だが、 ツリー形式掲示板なら、記事追加時に記事の情報を別に記録しておくとか 最新記事がファイルの先頭に記録するタイプなら、最初の10件だけ読み込む 2ch式掲示板なら、書込み時にftellして、読み込み時にfseekする 固定長ファーマットにしてランダムアクセスする手もある そもそも277と279が答え出してるだろ Perl + CGIって何処にあるって探したら >>1 かよ。 >282 別スレでも話題になってるが♪のならこのへん。perlだけね。 ttp://www.onpuch.jp/files/onpuch.zip ログをテキストでやるのって難しそうですよね。 いっぱいファイル開いたり閉じたり面倒で気が遠くなりそうだったんで DBにしました。DBでも面倒なので放置気味ですが。 2ch型作っても、書き込み少なくてスカスカで見苦しいサイトがほとんどだし もっと一般人向けの良いアイディアの掲示板ってないですかね。 >>92-101 あたりの話をもっと聞きたいんだけど… でも自分から話をふるほど知識がないのでsage 電動ナナシ氏も初期不良氏も見かけなくなっちゃったからねぇ…。 まだ居るのか期待してageっ! おお、自分以外にも期待している人が! というわけで、ついでに1年以上前のことですが質問させてください。 >>95 で >BbsThread は自分のスレッドの全メッセージにアクセスでき、 てことは、BbsThreadは自分のスレッドの全メッセージを配列で持っているの? それともメッセージ取得メソッドが呼ばれるたびにファイルを開いて読み込むのかな? でもそうだとDBを使うかファイルを使うかで変わってくるからMesseageStoreのように MessageReaderを複数種類用意するってこと?? >>291 後者じゃないのかな? >MessageReaderを複数種類用意するってこと?? うん。多分。 【IT】すべてのWebページに勝手に掲示板を作成 http://news2.2ch.net/test/read.cgi/newsplus/1039690102/l50 グローバルビジョンは、すべてのWebページに勝手に掲示板を作成 できるシステムを開発した。http://www.petitmedia.com/ ここのシステム、PHP+ PostgreSQLでできてるらしい。 >>292 レスありがとうございます。やはり後者でしたか。 ということはThreadStoreやThreadReaderも複数用意するってことかな。 ああ、電動ナナシ氏作成の掲示板見てみたいなぁ。 電動さん降臨キボンヌ 前に掲示板のクラス設計途中までやったよね とりあえずとほほさんとこの http://tohoho.wakusei.ne.jp/soft/wbord.htm みたいな掲示板作ってみませんか? これなら簡単そうだし。 >>92 のメッセージクラスも流用できそうだし。 ━―━―━―━―━―━―━―━―━[JR山崎駅(^^)]━―━―━―━―━―━―━―━―━― ∧_∧ ピュ.ー ( ^^ ) <これからも僕を応援して下さいね(^^)。 =〔~∪ ̄ ̄〕 = ◎――◎ 山崎渉 他のスレでも書いたけど、掲示板っつかphpbbとかvBulletin目指して作ってる。 完成したけど、まだまだ付けたい機能あるし、バグチェック不十分だからソース公開してない。 http://earth.s13.xrea.com:8080/obb/index.php ほいな >>307 フリーで配布するから、もし見たいなら待ってください。 まだ付けたい機能あるし、バグのチェックが不十分。量も多いし…(汗。 遅くなっても6月中には公開します。 あ、でもソース公開したところで私の「オナニー作品」なのに変わりないよ(笑) __∧_∧_ |( ^^ )| <寝るぽ(^^) |\⌒⌒⌒\ \ |⌒⌒⌒~| 山崎渉 ~ ̄ ̄ ̄ ̄ ∧_∧ .(・∀・ ) と ) ガッ Y /ノ 人 / ) __∧_..< > _/し'_ |(.. `Д´ V (_フ彡 |\⌒⌒⌒\←>>310 \ |⌒⌒⌒~| ∧_∧ ∧_∧ ピュ.ー ( ・3・) ( ^^ ) <これからも僕たちを応援して下さいね(^^)。 =〔~∪ ̄ ̄ ̄∪ ̄ ̄〕 = ◎――――――◎ 山崎渉&ぼるじょあ (⌒V⌒) │ ^ ^ │<これからも僕を応援して下さいね(^^)。 ⊂| |つ (_)(_) 山崎パン 現在PHPで掲示板を作成してるんですが サーバーによっては、書き込みデータに "(半角ダブルクォーテーション)と'(半角シングルクォーテーション)と\(円マーク、バックスラッシュ) の文字があると、これらの文字の前に勝手に\マークを挿入して記録してしまうんです。 " → \" ' →\' \→\\ こんな感じに。何が原因なんでしょうか? いま、試してみたらほとんどのサーバーで勝手に挿入されてました。 xrea.comサーバーだけは挿入されませんでした。 もちろん、挿入するような処理はスクリプト側では一切やってません。 原因わかりました。どうやら ttp://search.net-newbie.com/php/faq.using.html#faq.using.stripslashes これが原因のようですね。 しかしfwrite関数で書き込みデータをファイルに書き出す直前に $message = stripslashes($message);を入れてみましたがそれでも\が除去されません。 どうしてでしょうかね? >>316 取れない事ないっしょ。。。 まずその処理を具体的にどうしてるのか出してみないとなんとも。 ってかここ質問すれじゃないし。 http://pc2.2ch.net/test/read.cgi/php/1073291978/l50 >>319 まだ使い始めて日が浅いもんで >>320 スマソ >>31 君は まず、htmlを覚えた方がいい。 なんだfont sizeって・・・・・ >>322 4年の時空を超えたレス! マジカッコイイ!! 痛いっつっても当時はfont size全盛だったような。 軽くしたければ静的で置くか、動的でもCとかの軽い言語で実装するしかない。 このスレ終了 ーーーー 4年以上前から有る1ヶ月以上止まったスレで高らかと終了宣言する馬鹿みっけ 部活の初級シスアドの勉強ほったらかしてスレッドフロート型掲示板を作り初めて早二週間。 スレッド一覧表示は各ページ分割もうまくいっている。 が、各スレッドの表示画面作るって事になってから、めんどくさくなってしまった。 俺が先生に今からphpやります。 と言ったら今頃php? と聞かれてしまった。 その言葉がまだよみがえる。 俺の夢はレンタルスペース管理人。そのために勉強している。 世の中はいろんな想いに溢れてんだ。 ネットの海を使って「伝えたい想いのある人」に協力したい。って思ってる。 今これを見て、多分多くは、「何と馬鹿な奴だろう」と思うだろうが、 書き込みするだけで、‥今からまたphpやってみようかな‥ って気分になれるんだ。 お前らも勉強がんばってくれ。 >>337 同じこと今日やったけど、そんなんスレッド表示用の型を1個用意して$_GETか何かでキー投げて それでlogから記事引っ張ればいいんじゃね >>334 お前何か勘違いしてないか?知識なんて使って減るもんじゃないから只だと思ってんだろ? 人に物を訊くってのがどういう事だか、自覚してる? 知識ってのはな、社会人に取って金と同じく貴重な財産なんだよ。使っても減らないけど、教えたら広まった分だけ価値が下がる。それを分けてくれって言ってんの自分でわかってる? 社会で必要とされる知識ってのはな、本になんか載ってない事ばかりなんだよ。全部人から人へ、直接のコミュニケーションを介して伝わって来たモンなんだ。 そういうノウハウを分けてもらう申し訳無さみたいな物が、伝わって来ないんだよ。お前の態度からは。 猿だって仲間から餌を分けてもらう時は申し訳無さそうな顔するんだよ。ヘラヘラ笑いながら近づいてったら殴り殺されんぞ。 猿だったら今頃とっくに死んでんだよお前。そんな態度で今まで。何回も言ったよな。謝る時は申し訳無さそうな顔をしろって。 そういう学校じゃ受けられない教育を受けておきながら、社会人を経験しなきゃ得られない知識を貰っておきながら、 何にも生かせてないんだよ今のお前は。学生のサークルごっこじゃないんだから。もっと四六時中危機感を持って生きてなきゃ駄目だよ。いい加減いつまで学生気分じゃ。 ヤリマンな痛い子 http://mbga.jp/.ge2d1857/_dia_list?u=14639062 ………… ごはんどきのプロフ詳細 ………… さすらいのパチラー今はペカッを修行中…足跡を見つけたら追っかけてチン○しゃぶりますよん(笑) カキしてください板書きミニメどちらでもOKですゥ お返しに一発ヤ○してアゲるから…いっぱい絡んでチョ!…パチでもスロでも必勝法伝授して下さい プロフィール…地域:石川県…職業:奴隷ちゃん…趣味:パチとS○xと男漁りとジャニ…星座:ふたご座…血液型:AB型…誕生日:6月11日 【超絶基地外12歳荒らしの判明しているコテハン】 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 ∧_∧ ( ・∀・) | | ガガッ と ) | | Y /ノ .人 / ) .人 < >_∧∩ _/し' < >_∧∩`Д´)/ (_フ彡 V`Д´)/ / ←>>312 / ←>>302 今気づいたけど>>1 の書き込み12年前かww 「PHPで掲示板とか・・・」って思ったけど、12年前なら納得・・・ つか、このスレどんだけ存続してるんだよ 12年前クソワロタwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww <?php include './confg.php'; include './function.php'; if($post = bbs_post()) { bbs_write($post); } bbs_view( bbs_entries(), bbs_params() ); ?> ふぅ、できた 誰でも簡単にネットで稼げる方法など 参考までに、 ⇒ 『半藤のブブイウイウレレ』 というサイトで見ることができます。 グーグル検索⇒『半藤のブブイウイウレレ』 UYAGMEERUX 食事から摂取する栄養素のビタミンDは、女性や緯度の高い地域に住む人では不足によって死亡リスクが高まるらしいことが、全国の住民を対象とした専門家チームの分析でわかり、論文報告された。 ビタミンDは魚やキノコ類などに多く含まれるが、日光の紫外線を浴びることでも体内で大量につくられる。このため、紫外線を日頃から避けている人や、高緯度のため紫外線量が少ない地域に住む人たちのあいだで、食事の影響が表れやすいらしい。 1995年から98年にかけて、食事調査に協力してもらった全国の約9万4千人のその後を2018年まで追跡し、食事からのビタミンD摂取量と死亡との関係を調べた。 喫煙や飲酒、運動習慣や肥満度などを考慮したうえで、食事からのビタミンD摂取量に応じて住民を五つのグループに分け、死亡リスクとの関係を分析した。その結果、全体としては摂取量と死亡リスクのはっきりした関連は見られなかった。 だが、女性と、対象としたうち高緯度の地域(岩手、秋田、新潟、長野の各県)の住民に限ると、ビタミンD摂取量が最も多い人たちでは最も少ない人よりも死亡リスクが13%、12%、それぞれ低かった。逆に言えば、摂取が足りない人は死亡リスクが高まることになる。 また、死因となった主な病気でみると、食事からのビタミンD摂取量が多いと、脳梗塞(こうそく)や肺炎による死亡のリスクが低くなる傾向が見られたという。 ビタミンDは不足すると骨粗鬆症(こつそしょうしょう)や2型糖尿病、感染症などのリスクが高まることが指摘されている。日光の紫外線を浴びることでもつくられるが、紫外線が弱まる季節などには不足が問題となる。新潟大を中心としたチームの住民調査では、血中のビタミンD濃度は3月と4月に最も低くなっていた よろしくお願いします! PHPで掲示板を作っているのですが、送信元ポート番号を格納している変数は、$_SERVER['REMOTE_PORT']で間違っていませんか? $_SERVER['REMOTE_ADDR'] . ':' . $_SERVER['REMOTE_PORT'] これで記録した "IPv4 Address":"Port番号" で、 https://abuse.jpne.co.jp/ こちらに検索をかけても、 「当該アドレスのISP連絡先はございません。」と出て結果が得られません。 そもそもこのサイトは正しく機能してるのでしょうか? 記録したポート番号が正しいかどうか確認する方法がありましたら教えてください。 以上よろしくお願いします read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる