第二回 自作スクリプト発表会【PHP】 (110レス)
第二回 自作スクリプト発表会【PHP】 http://medaka.5ch.net/test/read.cgi/php/1156116687/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
81: nobodyさん [sage] 2008/11/17(月) 12:27:58 ID:??? >>65はどうなったの? http://medaka.5ch.net/test/read.cgi/php/1156116687/81
82: nobodyさん [sage] 2008/11/17(月) 20:12:35 ID:??? >>81 まだ作りはじめたとこで、アップローダのアもできてない状態です。 おもっくそスレ違いで申し訳なかったです。 http://medaka.5ch.net/test/read.cgi/php/1156116687/82
83: nobodyさん [sage] 2008/11/17(月) 22:47:09 ID:??? >>80 あぼーんされたレスだけを別ファイルに保存するようにしてみた。 ソースは同じとこです。 Noticeが出るのは放置してます。 http://medaka.5ch.net/test/read.cgi/php/1156116687/83
84: nobodyさん [sage] 2008/11/18(火) 00:00:51 ID:??? ファイルアップローダ程度でDB使うのってどう思いますか? できるだけ環境を選ばず設置できるようにしたいので使いたくないんですが、 コーディングの煩雑さとパフォーマンスの誘惑に負けそうです。 僕もそうだったけど、「DBって何?聞いたことあるけど」って人は多いですよね。 敷居下げるならDBなしなのかなぁ・・・。 http://medaka.5ch.net/test/read.cgi/php/1156116687/84
85: nobodyさん [sage] 2008/11/18(火) 02:18:16 ID:??? ファイルベースが特段煩雑とも思わんが・・・。 素人向けのレンタルスペースでも動くスクリプトを配布したいんなら無しでしょうね。 ただPHPが動くレンタルサーバでDBが入ってないとこなんてあんの?知らないけど。 どちらも押さえときたいなら両方作って配布するとか。 http://medaka.5ch.net/test/read.cgi/php/1156116687/85
86: nobodyさん [sage] 2008/11/18(火) 07:15:17 ID:??? >>85 なるほど。 でもやっぱSELECTの手軽さは魅力だと思います。 DBばっか使ってるからファイルベースだとCSVしか思いつかなくて・・・。 ただ、アップローダは自鯖ってのが基本だと思ってます。 XAMPPとか使ってとりあえずDB入れたけど、使い方はさっぱりって人は多いと思うなぁ。 ってことでファイルベースでやってみます。 どうでもいいけど、前スレ見てたら以前もアップローダ作ってたこと思い出したw 完成したんだっけかなぁ・・・。 http://medaka.5ch.net/test/read.cgi/php/1156116687/86
87: >>65 [sage] 2008/11/24(月) 21:25:23 ID:??? ものすごくどうでもいいことですが、 ルータを買ったらDDNSに対応してたので、URLを変更しちゃいました。 >>65のアップローダは↓で作成中です。 ttp://lcdata.ath.cx:8080/2ch/upload/ http://medaka.5ch.net/test/read.cgi/php/1156116687/87
88: nobodyさん [sage] 2008/11/25(火) 20:18:05 ID:??? >>87 見れねーよ? 完成したん? http://medaka.5ch.net/test/read.cgi/php/1156116687/88
89: >>65 [sage] 2008/11/25(火) 22:54:07 ID:??? >>88 すいません、またまたURLを変更しました。 ttp://lcdata.ath.cx/2ch/upload/ こっちでやってます。 まだ作りかけです。 なんでポート80番が使えないんだろ? とか思ってたんですが、スカイプが使ってることに気づいたのでorz http://medaka.5ch.net/test/read.cgi/php/1156116687/89
90: 68 [] 2008/11/26(水) 15:39:46 ID:yZjcfnV8 // レスごとに分解 $thread = @file_get_contents($url); preg_match_all("/<dt>(.*)/", $thread, $matches); $res = $matches[1]; if ($res) { foreach ($res as $key => $value) { // レス番号 preg_match("/^(\d*)/", $value, $matches); $num = $matches[1] - 1; $new_csv[$num]["num"] = $matches[1]; // メールアドレス preg_match("/<a href=\"mailto:([^\"]*)/", $value, $matches); $new_csv[$num]["mail"] = $matches[1]; // 名前 preg_match("/<b>([^<]*)/", $value, $matches); $new_csv[$num]["name"] = $matches[1]; // 名前 preg_match("/<b>([^<]*)/", $value, $matches); $new_csv[$num]["name"] = $matches[1]; // 時刻 preg_match("/(<\/a>|<\/font>):(.[^I]*)ID:/", $value, $matches); $new_csv[$num]["time"] = $matches[2]; // ID preg_match("/(ID:)(.*?)<dd>/", $value, $matches); $new_csv[$num]["id"] = $matches[2]; // レスの内容 preg_match("/<dd>(.*)/", $value, $matches); $new_csv[$num]["res"] = $matches[1]; $abone = preg_match("/あぼ.*?ん<\/b><\/a>:あぼ.*?ん<dd>/", $value, $matches); if ($abone) { $new_csv[$num]["abone"] = true; }}} http://medaka.5ch.net/test/read.cgi/php/1156116687/90
91: 68 [] 2008/11/26(水) 15:45:19 ID:yZjcfnV8 >>90は>>75さんのhttp://lcdata.ddo.jp:8080/2ch/1156116687/68/index.phpsのソースの一部分です。 で、 preg_match_all("/<dt>(.*)/", $thread, $matches); この行で1レスづつ、配列に入れる。 で、 $res = $matches[1]; この行の意味がわからないです。 $matchesの変数、$matches[1]の変数、$resの変数のそれぞれの違いがわからないのです。 http://medaka.5ch.net/test/read.cgi/php/1156116687/91
92: >>65 [sage] 2008/11/26(水) 22:59:01 ID:??? >>90-91 いやあの晒されると恥ずかしいですが。 特にそこ適当なんでw http://jp2.php.net/manual/ja/function.preg-match-all.php 意味はマニュアルに書いてあるとおりです。 どっか動きがおかしいのを修正したいのか、改造したいのか、単純に意味がわからなかったのか、 コードが汚すぎて読みにくいって指摘なのか、PHPを覚えてみようと思ってるのか、 いったいどれでしょうか? ふと思い出したけど、php.iniのerror_reportingを書き換えなくても、 ---------------------------------------- <?php error_reporting(0); ←これ追加 ---------------------------------------- だけでNoticeは出なくなると思います。 http://medaka.5ch.net/test/read.cgi/php/1156116687/92
93: >>65 [sage] 2008/11/26(水) 23:04:25 ID:??? 超適当に説明しておくと・・・ まず、このスレのソースコードを見てみてください。 各レスが「<dt>〜」って1行になってるのがわかると思います。 まず、$matchesにその各レスが入ります。 $matches[1]には、「"/^(\d*)/"」などの1番目のカッコの中身が入ります。 そんでもって、さらにそのレスに対してpreg_matchをすることによって、 レス番号とか名前とかを切り出してるんです。 $matches[1]をわざわざ$resって変数に入れてるのは特に意味はありません。 http://medaka.5ch.net/test/read.cgi/php/1156116687/93
94: 68 [] 2008/11/26(水) 23:56:10 ID:yZjcfnV8 >>92 有り難うございます。 確かに、http://jp2.php.net/manual/ja/function.preg-match-all.php に ↓が書いてありました。 すみません。 >$matches[0] はパターン全体にマッチした文字列の配列 >$matches[1] は第 1 のキャプチャ用サブパターンにマッチした文字 > どっか動きがおかしいのを修正したいのか 動きは、ちゃんと動いてくれて感動しました。 >単純に意味がわからなかったのか、 はいそうです。 >PHPを覚えてみようと思ってるのか そうです、これがメインで1行づつ読み解かしてもらってます。 > ふと思い出したけど、php.iniのerror_reportingを書き換えなくても、 > ---------------------------------------- > <?php > error_reporting(0); ←これ追加 > ---------------------------------------- > だけでNoticeは出なくなると思います。 有り難うございます。 http://medaka.5ch.net/test/read.cgi/php/1156116687/94
95: nobodyさん [] 2008/11/27(木) 10:46:47 ID:QDCpWLvT 俺はこれ error_reporting(E_ALL); 面倒だけど変数をまとめて設定する癖がつくから後々楽だぞ http://medaka.5ch.net/test/read.cgi/php/1156116687/95
96: >>65 [sage] 2008/11/27(木) 20:06:40 ID:??? >>95 僕も余裕があればデバッグ中はそうするように心がけてみます。 PHPしか知らないから、変数の宣言とか型とかいい加減な扱いするクセついちゃったなぁ。 http://medaka.5ch.net/test/read.cgi/php/1156116687/96
97: nobodyさん [sage] 2008/11/27(木) 20:12:41 ID:??? 開発機のphp.iniで設定しときゃいいじゃん http://medaka.5ch.net/test/read.cgi/php/1156116687/97
98: >>65 [sage] 2008/11/27(木) 20:18:28 ID:??? >>97 そうですね。 他に何に使ってるわけでもないWeb鯖だし、それでいいと思います。 僕はいつも、↓みたいな感じでログを流しながら作業してます。 tail -f /apache/log/error_log Windowsで似たようなことってできるのかなぁ。 Cygwinとか試してみよう。 http://medaka.5ch.net/test/read.cgi/php/1156116687/98
99: nobodyさん [] 2009/05/19(火) 20:17:57 ID:D1418Uic 【設置場所】 http://u9.getuploader.com/kiren/ 【ソース】 http://u9.getuploader.com/kiren/download/1/chat.7z 【プログラミング経験】 3ヶ月 【希望評価スタイル】 悪い部分を指摘して欲しい 【自分の性格】 またーり 【備考】 表示部分はJQUERYで、サーバーの部分はPHPで作りました。どうも保守性が悪いような気がするので、 悪い部分があったら指摘してほしいです。 http://medaka.5ch.net/test/read.cgi/php/1156116687/99
100: nobodyさん [sage] 2009/05/21(木) 01:39:47 ID:??? 悪い部分って? http://medaka.5ch.net/test/read.cgi/php/1156116687/100
101: nobodyさん [sage] 2009/05/21(木) 10:06:33 ID:??? >>99 HTMLのエスケープはPHP側でやったほうがいいよ あとちゃんと見てないからよくわからんが、今HTTPヘッダで取ってくるログを判別してるみたいだけど、 それもPHP経由で重複したデータを取ってこないように。 http://medaka.5ch.net/test/read.cgi/php/1156116687/101
102: nobodyさん [sage] 2009/05/30(土) 11:37:25 ID:??? >99 暇だから見てみるか。 とりあえず3秒見たところだが、enter.phpにXSSな。htmlspecialchars()かけろ。 http://medaka.5ch.net/test/read.cgi/php/1156116687/102
103: nobodyさん [sage] 2009/05/30(土) 12:28:09 ID:??? load_namefile(&$a, $b)は、$aをそのまま返せばいい。参照渡しで値を返すと可読性が激しく低下する。返り値$iはcount($a)に等しいはずだ。 変数名が手抜きすぎる。$aとか$bとか$cとか$vとかなんの拷問だ。 append_namefile($name, $last_talk_time, $room_number)にするだけで10,000倍読みやすくなる。foreach()とかで使う一時変数も同じ。 「保守性の高いコード」はアーキテクチャが生むんじゃなくて、変数名やインデントなどのミクロな部分が生むんだ。神は細部に宿る。 $_POST["state"]での処理の振り分けは、明らかにifではなくcaseにすべき箇所。 名簿ファイルのロック処理が半端。flock()を信用するならbegin_lock()は不要。 信用しないならflock()が正常に動く事を前提としているbegin_lock()も同じく信用ならない事になるので意味がない。 信用しないならmkdirロックを使うべき。SQLiteかなんかを使ったほうが手っ取り早いが。 flock($fp, LOCK_UN)してはいけない。「鍵を開けた後、ファイルを閉める」までの間にファイルが破壊される。 単に閉じれば安全な形でロックが開放される。 http://medaka.5ch.net/test/read.cgi/php/1156116687/103
104: nobodyさん [sage] 2009/05/30(土) 12:29:19 ID:??? メイン処理($_POST["state"]を見て実行される場所)のひとつひとつを関数ないしクラスにした方が、可読性が向上する。 意図をそのまま関数名にしろ。例えば最初のブロックは、そのまま読むと 「ロックを取り、ユーザー名簿を取得し、名簿に書いてある数字がいまの時刻より$_keep_time小さかったら名簿を削除し、名簿を再度書き出す」 わけだが、お前はトップレベルのコードを読んでる時はそうは思考しないだろ? 「長時間退席しているユーザーを蹴る」とか、そういう粒度でこの処理を見るはずだ。ならこの処理は「kick_afk_users()」と関数化すべきなんだ。 トップレベルでやってる処理は多岐に渡るんだから、詳細はいったん別の場所においておくべき。 kick_afk_users(); if($_POST["state"] == "enter"){ enter_room(); }else if($_POST["state"] == "quit"){ quit_room(); }else if($_POST["state"] == "sid"){ if(!in_room($name)){ enter_room(); } rotate_log(); add_talk(); とかなってれば、この部分をざっと見るだけでおおざっぱな処理の流れが見て取れるようになる。 http://medaka.5ch.net/test/read.cgi/php/1156116687/104
105: nobodyさん [sage] 2009/05/30(土) 16:37:24 ID:??? >>103 99じゃないけど > flock($fp, LOCK_UN)してはいけない。 これは以外だった。ちょっと調べてみよ。 http://medaka.5ch.net/test/read.cgi/php/1156116687/105
106: 【23.9m】 電脳プリオン [sage] 2012/05/06(日) 15:00:42.23 ID:??? ∧_∧ ( ・∀・) 人 ガッ ( つ―-‐-‐-‐-‐-‐○ < >__Λ∩ 人 Y ノ. V`Д´)/ し(_) / ←>>21 http://medaka.5ch.net/test/read.cgi/php/1156116687/106
107: 島本町で凄惨なイジメを受けて廃人になった方へ [] 2014/08/09(土) 16:53:26.10 ID:eoXmXjRk >大阪府三島郡島本町の小学校や中学校は、暴力イジメ学校や。 島本町の学校でいじめ・暴力・脅迫・恐喝などを受け続けて廃人になってしもうた僕が言うんやから、 まちがいないで。僕のほかにも、イジメが原因で精神病になったりひきこもりになったりした子が何人もおる。 教師も校長も、暴力やいじめがあっても見て見ぬフリ。イジメに加担する教師すらおった。 誰かがイジメを苦にして自殺しても、「本校にイジメはなかった」と言うて逃げるんやろうなあ。 島本町の学校の関係者は、僕を捜し出して口封じをするな 子供の時に受けた酷いイジメの体験は、一生癒えない深い傷になる 「暴力とイジメと口裏合わせと口封じ」の町やそういう町に巣食うヤクザ・チンピラ・ゴロツキ・不良・ いじめっ子・殺人鬼・ダニ・ノミ・シラミなどを監視して非難するのは暮らしやすい町を作るのに必要だ http://medaka.5ch.net/test/read.cgi/php/1156116687/107
108: nobodyさん [] 2017/12/30(土) 13:59:10.80 ID:YhlYw6jg 誰でも簡単にネットで稼げる方法など 参考までに、 ⇒ 『半藤のブブイウイウレレ』 というサイトで見ることができます。 グーグル検索⇒『半藤のブブイウイウレレ』 AO0UH9L8HP http://medaka.5ch.net/test/read.cgi/php/1156116687/108
109: nobodyさん [] 2019/05/09(木) 02:21:04.26 ID:HHcYDMUs phpについて役立つ情報とか http://mevius.5ch.net/test/read.cgi/tech/1557329831/l50 7H9 http://medaka.5ch.net/test/read.cgi/php/1156116687/109
110: nobodyさん [sage] 2023/09/25(月) 03:18:49.75 ID:??? (||゚Д゚)ヒィィィ!(゚Д゚||) http://medaka.5ch.net/test/read.cgi/php/1156116687/110
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.528s*