- 1 名前:nobodyさん [2009/03/09(月) 02:14:28 ID:HyrthkeE]
- 質問者はまず>>1を良く読むこと(必須!)
過去スレ、関連スレ、FAQなどは>>2-10辺り 次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。 ◆前スレ 【PHP】下らねぇ質問はID出して書き込みやがれ 81 pc11.2ch.net/test/read.cgi/php/1234958956/ ◆質問用テンプレ 【OS名】vine linux 【PHPのバージョン】php5.26 【連携ソフトウェア】mysql 【質問内容】 ◆質問する時の注意 ・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す) ・ 己の行った操作、変更などを詳しく明記すること。 ・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。 ・ 質問者として、態度をわきまえること。 ・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。 (PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。) ◆質問後の注意 ・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。 ・解決しなくても回答をもらった場合はお礼を言うこと。 (荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。) ◆回答者への注意 ・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
- 264 名前:nobodyさん mailto:sage [2009/03/15(日) 20:33:50 ID:???]
- >>258
switchでcaseが大量になる場合は配列をうまく利用することをおすすめする function func1() { } ・ ・ ・ $case = array(func1(),func2(),func3(),・・・・・func999), $case[0];
- 265 名前:nobodyさん mailto:sage [2009/03/15(日) 21:34:38 ID:???]
- >>264
www
- 266 名前:nobodyさん mailto:sage [2009/03/15(日) 22:37:58 ID:???]
- >>265
shosinsha otu
- 267 名前:261 mailto:sage [2009/03/15(日) 22:54:26 ID:???]
- >264
せめて $case = array('func1', 'func2', 'func3'); call_user_func($case[0]); // $case[0]();でも多分動く にしとけ。 とりあえずそのコードは実行効率、可読性、保守性などあらゆる観点で最低だ。 後者2つについてはこのコードも大差ないが。
- 268 名前:nobodyさん mailto:sage [2009/03/16(月) 01:35:07 ID:???]
- ふと思ったんだけど、例えば見栄え良く
改行いっぱい使って、 $hoge = "hoge1" . "hoge2" . "hoge3" ; こうしたのと、単に $hoge="hoge1hoge2hoge3"; ってしたのとでは、 上のような改行いっぱい使った場合のが 積み重なってくると、改行使ってないものよりも 読み込みが遅くなる? 改行やスペースは無視になるとはきくけどなんか不安なのです。
- 269 名前:nobodyさん mailto:sage [2009/03/16(月) 02:37:08 ID:???]
- >268
文字列の結合の分遅くなるな、理論上は。 改行も、確かに理屈の上では遅くなる。人間に知覚できる差じゃないけどな。 仮に10000行空行があったとしても、目に見える応答速度差は出ない。 1MB分改行があっても気づかないと思う。 つうか、お前は、ペーパー代を惜しんでウンコした後ケツを拭かなかったりするのか? ゴミみたいな高速化と可読性を天秤にかけるなら、どう考えても可読性を優先すべきだ。
- 270 名前:nobodyさん mailto:sage [2009/03/16(月) 06:04:33 ID:???]
- javaだと文字列リテラル同士の結合はコンパイル時にオプティマイズされて
結合された文字列になるんだっけか。 スクリプト言語で拘ってもしょうがないとは思うが、気分的にはやってほしいところではあるな。 APCとかのキャッシュ環境なら差がでるかも知れんし。
- 271 名前:nobodyさん mailto:sage [2009/03/16(月) 11:58:48 ID:???]
- 「PHPでOOPで書く場合の、helloが出てくるまでの長い一日」
(1)さーって、、、まんず、helloって出すわけだから、 print "hello"; だろ、、、これはまず100%確実、、、 (2)そんで、クラスの宣言せんといかんな、、、 class { } 、、、っと、、、 あ、、、クラス名、考えないといかんな、、、 はじめてのだから、firstでいいか? class first { }
- 272 名前:nobodyさん mailto:sage [2009/03/16(月) 12:00:24 ID:???]
- (3)
そんで、さっきの print "hello"; を、メソッドの中に入れないといかんのだよな、、、 あ!メソッド名も考えないといかんのだよな、、、 helloを出すメソッドだから、helloでいいか? function hello(){ print "hello"; }
- 273 名前:nobodyさん mailto:sage [2009/03/16(月) 12:01:11 ID:???]
- (4)
よしよし、、、作業は順調だな、、、 これで、このメソッドを、さっき作った クラスの中に、放り込めばいいのだよな、、、 class first{ function hello(){ print "hello"; } }
- 274 名前:nobodyさん mailto:sage [2009/03/16(月) 12:02:05 ID:???]
- (5)
これでクラスは完成、、っと、、、 次は、このクラスをnewして、 オブジェクトに代入せなあかんのだよな、、、 $obj=new first();
- 275 名前:nobodyさん mailto:sage [2009/03/16(月) 12:03:00 ID:???]
- (6)
よしよし、、、 これでインスタンスができたから、 このインスタンスから、->で、クラス内の メソッドにアクセスすればええんだよな、、、 print $obj->hello();
- 276 名前:nobodyさん mailto:sage [2009/03/16(月) 12:03:51 ID:???]
- >>274
括弧ついてるよ初心者クン
- 277 名前:nobodyさん mailto:sage [2009/03/16(月) 12:05:51 ID:???]
- (7)
<?php class first{ function hello(){ print "hello"; } } $obj=new first(); print $obj->hello(); ?> 完成、、、と、、、。 カンタンに説明すると、 firstというクラスを定義しhello()というメソッドを定義し そのメソッドの中でhelloを出力する命令を書きnewでfirstクラスの インスタンスを作成しオブジェクト変数に代入しそのできてきた インスタンスからhello()メソッドにアクセスして最終的にhelloを 画面に出すことに成功しました。
- 278 名前:nobodyさん mailto:sage [2009/03/16(月) 12:06:40 ID:???]
- >>276
どちらでも実行できるんだけど、なんか問題あるなら それを解説したページをプリーズ
- 279 名前:nobodyさん mailto:sage [2009/03/16(月) 12:08:53 ID:???]
- ちなみに手続型でhelloを出すソースは以下の通り
<?php print "hello"; ?>
- 280 名前:nobodyさん mailto:sage [2009/03/16(月) 12:10:12 ID:???]
- >>276
お前が初心者なのは分かった
- 281 名前:nobodyさん mailto:sage [2009/03/16(月) 12:19:32 ID:???]
- >>276
普通はつけます
- 282 名前:nobodyさん mailto:sage [2009/03/16(月) 12:21:35 ID:???]
- クラス使えばOOPってわけじゃないべ。
- 283 名前:nobodyさん mailto:sage [2009/03/16(月) 12:25:30 ID:???]
- つか全然OOPじゃないわな
- 284 名前:nobodyさん mailto:sage [2009/03/16(月) 12:29:26 ID:???]
- >>282
ものの考え方・概念のことだから本質的にはそうだね ただOOPの核となる継承やらカプセル化をする為にはクラスを使わないといけない helloを出力するだけにわざわざクラス使うのはPHPではただの冗長
- 285 名前:nobodyさん mailto:sage [2009/03/16(月) 13:00:26 ID:???]
- hello出力するだけのただの形ではあるから参考にならないなあ
OOP勉強してる人いないの?
- 286 名前:nobodyさん mailto:sage [2009/03/16(月) 13:10:52 ID:???]
- >>285
一応、スレはある。 が、もう死にかけの体。 PHPでOOP ttp://pc11.2ch.net/test/read.cgi/php/1172205352/l50
- 287 名前:nobodyさん mailto:sage [2009/03/16(月) 13:11:01 ID:???]
- >>279
おお、さすが最強PHPw。 ハーディ・ラマヌジャン数を出力するプログラムは、 Cで書いても、実行に数十秒かかる。 perlやpythonに至っては数分以上かかる。 だが、PHPなら、一瞬。むしろ、計算する必要すらない。 <?php echo "1729"; ?> もちろん、パクリネタだ。
- 288 名前:nobodyさん mailto:sage [2009/03/16(月) 13:25:45 ID:???]
- >>285
本気で勉強したいならJavaでやったほうがいいって散々言われてるだろ オブジェクト指向という考え方を理解するためだけなら わざわざPHPでやる必要はない OOPに関するドキュメントの多いJavaでやったほうがいい PHPでOOPなんてJavaやC#なんかをやってるやつの為にあると思っていい
- 289 名前:nobodyさん [2009/03/16(月) 15:26:16 ID:zNDXWAna]
- くだらない質問ですがお願いします。
($a < $b) ? $key = $a : $key = $b; これの意味がちょっとわからないのですがif文で表すことってできますか?
- 290 名前:nobodyさん mailto:sage [2009/03/16(月) 15:33:02 ID:???]
- if ($a < $b) {
$key = $a; } else { $key = $b; }
- 291 名前:nobodyさん mailto:sage [2009/03/16(月) 15:33:12 ID:???]
- $key= ($a < $b) ? $a : $b;
普通はこう書く if ($a < $b) $key= $a; else $key= $b;
- 292 名前:nobodyさん [2009/03/16(月) 15:52:09 ID:zNDXWAna]
- >>290>>291
なるほど!ありがとうございます。 ちなみに>>289の書き方とif使った書き方、どっちがいいとかあるのですか?
- 293 名前:nobodyさん mailto:sage [2009/03/16(月) 15:59:13 ID:???]
- >>292
上記のような簡単なif文なら三項演算子でもいいと思うけど、複雑なものになると 可読性が落ちるので、その場合は素直にif文で済ませた方がよい
- 294 名前:nobodyさん mailto:sage [2009/03/16(月) 16:01:19 ID:???]
- >>292
三項演算子は変数に入れることができる なので結果を変数に入れたいときとかは便利だが 条件文をかくためだけに使うなら可読性を重視して 普通のif-else文を使ったほうがいい 三項演算子なんてなくてもコーディングできるので 他の人と共同開発なんかの場合は使わないほうがいい
- 295 名前:nobodyさん [2009/03/16(月) 16:34:41 ID:zNDXWAna]
- >>293>>294
ありがとうとざいました。 使わないほうがよさそうですね。
- 296 名前:nobodyさん [2009/03/16(月) 16:46:33 ID:TMtB/4sw]
- オープンな掲示板へのスパム投稿をブロックするにはどうしたらいいでしょうか?
メジャーな方法だとcaptchaを入れるんでしょうが、他に方法あったら教えてください。 たとえば、スパム業者(国内・国外問わず)のIPリストなんかはないんでしょうか? よろしくお願いします
- 297 名前:nobodyさん mailto:sage [2009/03/16(月) 16:49:43 ID:???]
- >>296
そのリストがあったら既に大手ブログサービス業者は導入して平和になってるはずだよな
- 298 名前:nobodyさん mailto:sage [2009/03/16(月) 17:14:59 ID:???]
- >>296
基本的な対策として 本文中のhttp://文字列を禁止する もしくは出てくる回数を制限する (最近はttp://からはじめたりドメインからはじめたりするスパムもある) 文字がどういうもので構成されてるかを見る 日本語[あ-ん]が必ず入っていないと駄目とか [\x00-\x7f]のみの文字列だったら駄目とか (最近は文章の最後のほうに日本語を適当に入れてくるスパムもある) スパムをあえて投稿させてパターンを分析し 自分でリストを作成する(IPなり禁止文字列なり) (IPはできればサーバ側ではじく) このほかによく見る方法としては ひらがなに対応するカタカナを入力してもらうとか (captchaはすでに効果がないので代替手段を) 他の閲覧者にスパムかどうかを判定してもらってJavaScriptで非表示にする (youtubeなんかで見るパターン) とかかな いずれも限界があるので閲覧者に被害が出ないようにだけ配慮すればいいんじゃない? そういう観点では誤クリ防止にhttp://のオートリンクをしないとかが一番効果的
- 299 名前:nobodyさん mailto:sage [2009/03/16(月) 17:19:04 ID:???]
- どれもいまいちな方法だな
- 300 名前:nobodyさん mailto:sage [2009/03/16(月) 17:21:48 ID:???]
- >>299
いまいちでない方法をどうぞ
- 301 名前:nobodyさん mailto:sage [2009/03/16(月) 17:28:15 ID:???]
- あなたはスパム業者ですか?
はい いいえ ↑これを入力させればいい
- 302 名前:nobodyさん mailto:sage [2009/03/16(月) 17:30:34 ID:???]
- >>301
天才
- 303 名前:nobodyさん mailto:sage [2009/03/16(月) 17:55:37 ID:???]
- 2chはどうやってんだろ?
- 304 名前:nobodyさん [2009/03/16(月) 18:04:29 ID:GOOX8xiJ]
- PHPで効率化を突き詰めていくと、
MVCを考えた、フレームワークのような形になるのですが、 やっぱり皆さんもそうですか?それとも最初からフレームワーク使いますか?
- 305 名前:nobodyさん mailto:sage [2009/03/16(月) 18:06:47 ID:???]
- >>298
日本語が入ってないとダメってのはもう古い 日本語スパムははじけないよ
- 306 名前:nobodyさん mailto:sage [2009/03/16(月) 18:10:14 ID:???]
- やっぱり、画像認証(ランダムの数字を入力するやつ)
しか対処できないんじゃないか? ライブラリも多いし、作るのも難しくないだろ。
- 307 名前:nobodyさん mailto:sage [2009/03/16(月) 18:21:17 ID:???]
- >>303
2chは管理に協力してる人間がいっぱいいるから 手動でどうにかなるレベルなんだよ
- 308 名前:nobodyさん mailto:sage [2009/03/16(月) 18:49:09 ID:???]
- PHPの初心者用参考書をちょっと読んだだけの初心者です
register_globalsをonにするとセキュリティ上よくなく また、PHP6からはonにすることができなくなると聞きました そこで質問なのですが、ハイパーリンクにごとにページの内容を変えたり 処理の内容を変えたりしたい場合は他にどのような方法があるのでしょうか 質問とは関係ないのですがスパム対策で 1 + 2 = [ ] といのを見たことがありますね (数値は画像でランダムでした
- 309 名前:nobodyさん mailto:sage [2009/03/16(月) 19:11:39 ID:???]
- >>308
基本的には POST あるいは GET メソッドでクエリを渡して、その値に応じて処理を分ける。 ハイパーリンクでなら GET 。
- 310 名前:nobodyさん [2009/03/16(月) 19:21:10 ID:TMtB/4sw]
- >>298
たくさんの意見ありがとうございます カタカナをひらがなにっていうのはいいですね! キャプチャの文字列をカタカナにするってのは無理なんでしょうか?
- 311 名前:nobodyさん mailto:sage [2009/03/16(月) 19:25:46 ID:???]
- スクリプトでは理解できない&日本人にしかわからないような
質問をランダムに生成できればいいんだが 質問と答えがあらかじめ決まってるようなものだとそのうち解析されるし 画像のひらがなをみてカタカナにしろぐらいだとCaptcha解析技術応用すれば 解析したひらがなに対応するカタカナに置き換えればできちゃうし 完全な対策なんてないからどこかで妥協するしかない いろんなことやった上でなんとかして投稿してやろうなんて考える 海外のスパマーなんてそうはいないよ 仮にいろんな対策をした上で変なのが投稿されたらそれは日本人の愉快犯だ というわけでそんな神経とがらせてスパマー対策しなくてもいいんじゃないだろうか
- 312 名前:nobodyさん mailto:sage [2009/03/16(月) 19:32:15 ID:???]
- >>310
できますよ そういうライブラリは探せばあるんじゃないかな? 単に文字を画像に出力するだけなら簡単なんですけどね 画像をゆがめたりする処理が難しいんじゃないかな
- 313 名前:nobodyさん mailto:sage [2009/03/16(月) 21:48:57 ID:???]
- 普通にCAPTYAいれとけば?
- 314 名前:nobodyさん mailto:sage [2009/03/16(月) 21:50:47 ID:???]
- ちなみに2ちゃんがやってるのは、、、
(1)書き込みをしようとしてきたら、クッキーを 受け入れてるかどうかを確認する。クッキーないやつは 書き込みできない (2)書き込みしてきようとしたサーバーに簡易ポートスキャンをかけ、 オープンプロキシでないことを確認する。もしオープンプロキシだったら拒否 (3) プロキシからの書き込みについては、手動で リストを作成して、そのリストにIPが載っていたら、拒否。 こんな感じ。一部だけど。
- 315 名前:nobodyさん [2009/03/16(月) 23:05:32 ID:l8gT672P]
- セッションを使って、
ログインしないと見れないページを作ったんだが、 画像はどうやって守ればいいんだ?
- 316 名前:nobodyさん mailto:sage [2009/03/16(月) 23:07:02 ID:???]
- >296 >297
DNSBL(DNSブラックリスト)でぐぐれ スパムちゃんぷるーが手軽
- 317 名前:nobodyさん mailto:sage [2009/03/16(月) 23:21:56 ID:???]
- >>315
そこでPHPですよ
- 318 名前:nobodyさん [2009/03/16(月) 23:35:54 ID:l8gT672P]
- >>317
PHPで画像を送出するってことかな? ぐぐったけど具体的なコードがわからない
- 319 名前:nobodyさん mailto:sage [2009/03/16(月) 23:51:20 ID:???]
- 2行でおk
ヘッダ送信 readfile()で出力
- 320 名前:nobodyさん mailto:sage [2009/03/16(月) 23:53:20 ID:???]
- セッションも処理しないとwwwwwwwwww
- 321 名前:nobodyさん [2009/03/17(火) 00:28:16 ID:PIugUbr/]
- $sql = "SELECT name FROM address";
$res = mysql_query($sql); $row = mysql_fetch_array($res); echo $row["name"]; こうしたらMySQLから1行取得出来ますが、もっと簡略化する方法は無いでしょうか? 特に、結果が1行・1フィールドだと分かっている場合、 mysql_fetch_arrayをして一旦配列に入れるのは不効率な気がしています。
- 322 名前:nobodyさん mailto:sage [2009/03/17(火) 00:35:15 ID:???]
- echo (mysql_fetch_array(mysql_query("SELECT name FROM address")))["name"];
- 323 名前:nobodyさん mailto:sage [2009/03/17(火) 00:38:22 ID:???]
- >321
SELECT name FROM address LIMIT 1 配列に代入云々は数マイクロ秒とかのゴミみたいな差しかつかない。 こいつは測定可能なレベルで実行性能に影響する。
- 324 名前:321 mailto:sage [2009/03/17(火) 01:11:49 ID:???]
- >>323
>>321のようなテーブルにアクセスして、指定値を取得する関数を 作っているのですが、 321のソースでフィールド「name」が異なる場合、 echo $row["name2"]; というように名称を指定して出力しなければいけません。 まぁ、関数を function dbSelect($fld_name){ echo $row[$fld_name]; } とすれば良いだけの気がしますが、 何か良い関数があるのかと思い、質問しました。
- 325 名前:nobodyさん mailto:sage [2009/03/17(火) 02:58:59 ID:???]
- 1からCMS作ろうと思います。
応援よろしくお願いします
- 326 名前:nobodyさん mailto:sage [2009/03/17(火) 03:15:35 ID:???]
- がんば〜
- 327 名前:nobodyさん mailto:sage [2009/03/17(火) 07:54:44 ID:???]
- >>324
PDOが使用可能であれば… jp.php.net/manual/ja/pdostatement.fetchcolumn.php
- 328 名前:nobodyさん mailto:sage [2009/03/17(火) 08:04:24 ID:???]
- 実はおれもCMS自作してるけど
ネックなのは一度もCMSを使ったことがないことだ・・
- 329 名前:nobodyさん mailto:sage [2009/03/17(火) 09:18:29 ID:???]
- CMSを使ったことがない人がCMS作っても劣化品にしかならない
- 330 名前:nobodyさん [2009/03/17(火) 10:44:32 ID:Ib1RB6YL]
- キーワード自動リンクの仕組みを作っています。
データベースなどに以下のようなデータがあるとします。 id,word 1,日本 2,日本海 3,日本海溝 4,太平洋 これらを辞書として、 ・日本海溝は太平洋側にあります。 という文章に最長で一致するものからリンクを張っていくのですが、 <a href="word/3"><a href="word/2"><a href="word/1">日本</a>海</a>溝</a>は<a href="word/4">太平洋</a>側にあります。 のように、重複してリンクが張られてしまいます。 すでにリンクが張られている言葉の内側にはリンクを張らないようにしたいのですが、 どのような対処法が考えられますでしょうか? PHPで処理する場合の対処法を教えてください。
- 331 名前:nobodyさん mailto:sage [2009/03/17(火) 11:14:15 ID:???]
- マッチさせてるコードは?
- 332 名前:nobodyさん mailto:sage [2009/03/17(火) 11:32:03 ID:???]
- $words = array(
array( 'id' => 1, 'term' => '日本' ) ); 辞書がこんなかんじの配列にあって、 foreach ($words as $word) { str_replace($word['term'], '<a href="word/' . $word['id'] . '">' . $word['term'] . '</a>', $body); } 辞書は単語の文字数の長い順にソートさせてあります。 実際のコードとは違うのでどこか変かもしれませんが、流れはこんな感じです。 単純に、辞書の配列をforeachさせて、 str_replaceでアンカータグをつけたものに置き換えているだけです。 なので、重複して置き換えられてしまうのは当然なのですが、 対処法が思い浮かばなくて; よろしくお願いします。
- 333 名前:nobodyさん mailto:sage [2009/03/17(火) 11:33:23 ID:???]
- すみません、訂正です;
× str_replace($word['term'], '<a href="word/' . $word['id'] . '">' . $word['term'] . '</a>', $body); ○ $body = str_replace($word['term'], '<a href="word/' . $word['id'] . '">' . $word['term'] . '</a>', $body);
- 334 名前:330 [2009/03/17(火) 11:34:31 ID:Ib1RB6YL]
- >>332
>>333 ID出し忘れました・・・スレ汚してすみません;
- 335 名前:nobodyさん [2009/03/17(火) 11:45:00 ID:PBdJ+iXh]
- 宜しくお願いします。
【OS名】Windows XP 【PHPのバージョン】php4.4.4 【質問内容】 『−』を含んだ文字列を preg_match で検索するとエラーが発生するのでキーワードを preg_quote で処理すると 『ホームページ』が『ホ―[ムペ―[ジ』となってしまいます。 お知恵を貸して下さい。お願いします。
- 336 名前:nobodyさん [2009/03/17(火) 11:48:44 ID:Vq5xUXrn]
- >>335
mb_internal_encoding('utf8'); mb_regex_encoding('utf8');
- 337 名前:nobodyさん [2009/03/17(火) 11:49:06 ID:qY/TJCjN]
- たまにGDでjpeg画像を処理した時にエラーが出て何も描かれてないjpeg画像がブラウザに出る時があるんだけど
そのエラーを表示しない方法はphp.iniで指定するってのは分かった。 これでエラーは出なくなったわけだが、画像はやっぱり出ない。 どうやらいつも同じファイルを処理した時にエラーになるので 画像ファイル側の問題だと思うけど これをうまく処理する事はできるの? そもそも何でこんなエラーがでるの? 知ってる人 教えてYO!
- 338 名前:nobodyさん mailto:sage [2009/03/17(火) 11:53:27 ID:???]
- その画像をうpれ
- 339 名前:nobodyさん mailto:sage [2009/03/17(火) 12:02:31 ID:???]
- >>335
はやく5に移行しろよ
- 340 名前:nobodyさん [2009/03/17(火) 13:22:05 ID:PBdJ+iXh]
- >>336さん。
有難う御座います。 mb_regex_encodingでUTF-8にしてもやはりホ―[ムペ―[ジとなってしまいます。 >>339さん。 まだ勉強中の為に5への以降は難しいです…
- 341 名前:nobodyさん mailto:sage [2009/03/17(火) 13:33:39 ID:???]
- まず検索する対象とキーワードの文字コードを把握できてないと解決できんぞ
- 342 名前:nobodyさん mailto:sage [2009/03/17(火) 14:22:48 ID:???]
- 4で勉強してから5にうつるより、最初から5で勉強しちゃったほうがいいような気もするんだけど。
- 343 名前:nobodyさん mailto:sage [2009/03/17(火) 14:23:55 ID:???]
- 4とか過去の汚物なんだから使う価値0
- 344 名前:nobodyさん mailto:sage [2009/03/17(火) 15:16:01 ID:???]
- 移行ってほど変わらんだろ。さっさと5使え
- 345 名前:nobodyさん [2009/03/17(火) 15:52:24 ID:s4aiV5Ak]
- 質問です。
このサイト(みんなのキャンパス:campus.nikki.ne.jp/) のように掲示板の情報を一部だけ閲覧することができ、 登録・ログイン後に情報をある程度投稿すると全ての情報が閲覧できるような 会員制サイトを作成したいと思っています。 WordPressやOpenPNEで色々試したのですがいまいちうまくいきません。 こういうものは、どうやったら実現できるのでしょうか? よろしくお願いします。
- 346 名前:nobodyさん mailto:sage [2009/03/17(火) 15:55:22 ID:???]
- if (未ログイン) {
一部表示処理 } else { 全表示処理 }
- 347 名前:nobodyさん mailto:sage [2009/03/17(火) 16:03:10 ID:???]
- CMSで駄目なら何をやっても駄目な気がする
とりあえず Wordpress の方なら is_user_logged_in() でログインしてるかどうか調べられるよ
- 348 名前:nobodyさん mailto:sage [2009/03/17(火) 16:22:38 ID:???]
- >>345
フレームワークで作るという手もある。
- 349 名前:nobodyさん mailto:sage [2009/03/17(火) 16:56:04 ID:???]
- フレームワーク使っているかもしれないけど、
各プラグインは自作しなければいけないからな。 俺も自作システムを作る時にWordpressやらOpenPNEやらを見たけど、 やっぱり「目的の仕様に合った作り方」をしているので、 それらを改造してオリジナルのシステムを作るのは無理があるよ。
- 350 名前:345 [2009/03/17(火) 17:04:11 ID:s4aiV5Ak]
- みなさんご回答有難うございます。
質問の仕方が悪くて申し訳ありません。 みんなのキャンパス:campus.nikki.ne.jp/ というサイトは登録後ログインしても、 大学の講義情報を3件書き込まないと全ての情報を見ることができません。 このように書き込まないと掲示板の他のページが見れない、といったように するにはどういった処理が必要なのでしょうか? よろしくお願いします。
- 351 名前:335 [2009/03/17(火) 17:08:29 ID:PBdJ+iXh]
- >>341さんとレスを頂いた皆さん。
お陰で解決致しました。有難う御座います。 出来るだけ早く5に以降するよう努力致しますf^^; 有難う御座いました!
- 352 名前:nobodyさん mailto:sage [2009/03/17(火) 17:13:30 ID:???]
- >>350
そこがどんな風な実装をしてるかは知らないけど。 ユーザー情報に「書き込んだ回数」を記録する。 一緒に「全ての情報を見れる権限」もフラグとしてDBに記録しておいて、書き込み回数が3回を越えた時点で true にする。 で、ページを表示するときにその権限を持ってるか持ってないかを判断する。
- 353 名前:nobodyさん mailto:sage [2009/03/17(火) 17:17:13 ID:???]
- 俺だったら「書き込んだ回数」か「全ての情報を見れる権限」のどちらかしか属性作らないな
- 354 名前:nobodyさん mailto:sage [2009/03/17(火) 17:22:32 ID:???]
- >>353
確かに書き込み回数だけでも十分だな、すまん。
- 355 名前:330 [2009/03/17(火) 17:37:21 ID:Ib1RB6YL]
- >>330 の回答をどなたかお願いできませんでしょうか?
- 356 名前:nobodyさん mailto:sage [2009/03/17(火) 17:44:56 ID:???]
- >>355
自分がどうやってるか書いてないよな。推測すると、再帰でpreg_matchでもやってんのか? まぁ、それはいいや。 単語リストをベースにトークナイザーにかけて処理するのがいいと思うよ。
- 357 名前:345 [2009/03/17(火) 18:00:29 ID:s4aiV5Ak]
- >>352さん
>>353さん、回答下ったみなさん、有難うございました! 2ちゃんねるはじめてだったのですが回答いただけてうれしかったです。 なんとなく方向がわかったので色々やってみます。
- 358 名前:330 [2009/03/17(火) 18:07:06 ID:Ib1RB6YL]
- >>356
すみません; >>332 に書いたのですが、IDを出し忘れてしまって・・・ 恥ずかしながら、トークナイザーというのをはじめて聞いたのですが、 どういったものなのでしょうか? PHPには、その機能は備わっているのでしょうか?
- 359 名前:nobodyさん mailto:sage [2009/03/17(火) 19:00:40 ID:???]
- wikiのソース参考にしてみたら?
- 360 名前:nobodyさん mailto:sage [2009/03/17(火) 19:31:59 ID:???]
- >>330
アルゴリズムの問題だと思うけど、マッチングした文字列をいったん置き直して、展開しなすとかしたら? 日本海溝は太平洋側にあります。 <3>は太平洋側にあります。 <3>は<4>側にあります。 みたく文字列を順次置き直して、あとから <id>をリンクつきのHTMLで展開。
- 361 名前:330 [2009/03/17(火) 19:43:02 ID:Ib1RB6YL]
- >>359
それだけの力があればそうしたいのですが・・・ 基本的な考え方だけでもお願いしたいです。 >>360 おぉ!そういう方法がありましたね。 しかし、元の文章に<1>という文字列が含まれていた場合、面倒なことにならないでしょうか? 元の文章は、ユーザーが自由に投稿できる類のものなので・・・ <<<1>>>のように、括弧を増やしたり、!?!1!?!のように、複雑なものにすれば 出現する確立は減らすことができるのでしょうが、それでも0パーセントではないですし・・・ おっしゃるとおり、PHPに関する質問という範囲を超えているかもしれませんが、 どうかお付き合いお願いしたいです。
- 362 名前:nobodyさん mailto:sage [2009/03/17(火) 19:51:31 ID:???]
- キーワードをrsortして順にリンク外文字列に対して処理していけばいい
- 363 名前:nobodyさん mailto:sage [2009/03/17(火) 19:51:53 ID:???]
- ユーザの投稿に<1>があったら\<1\>とかにまず置き換えればいいじゃん
そんで>>360の処理のあとにもとにもどせばよい
- 364 名前:nobodyさん mailto:sage [2009/03/17(火) 20:07:16 ID:???]
- >>330
優先順位が悪い 1,日本海溝 2,日本海 3.日本 の順でループして探索して見つかったら置き換えてbreakして位置を記録 最後に置き換えた位置から同様にして探索 これをEOFに達するまで繰り返す
|

|