第二回 自作スクリプト発表会【PHP】

このエントリーをはてなブックマークに追加
11様
自分が書いたPHPスクリプトを発表するスレ。

初心者が書いた入門スクリプト、ベテランが書いたすげースクリプトを発表してね。
予めスクリプトの内容を明記してURLを貼り付けるのがよろしいかと。
マターリ進行でいきませう。


【PHP】自作スクリプト発表会
  http://pc8.2ch.net/test/read.cgi/php/1017456911/all


Warning: 発表の場は、学びの場。クレクレ君は他所へ。
2nobodyさん:2006/08/21(月) 09:29:50 ID:???
>>1
早漏乙

勉強系なのか批判系なのか自慢系なのかそのへん決めた方がいいんじゃね?
3nobodyさん:2006/08/21(月) 21:07:11 ID:???
潰し系。
4nobodyさん:2006/08/25(金) 08:39:59 ID:???
新感覚癒し系発表会。
5nobodyさん:2006/08/26(土) 14:38:26 ID:???
>>4
ちょ
6nobodyさん:2006/08/29(火) 12:11:10 ID:???
テンプレ:

【設置場所】 http://example.com/test.php
【ソース】 http://example.com/test.txt
【プログラミング経験】 3ヶ月 / 1年 / 3年
【希望評価スタイル】 悪い部分を指摘して欲しい / 良い部分を指摘して欲しい
【自分の性格】 かかってこいや! / またーり / 叩かれると自殺しちゃうかも
【備考】 B90/W58/H86 です。
7nobodyさん:2006/09/02(土) 15:43:17 ID:???
スリーサイズは必須な。
8nobodyさん:2006/09/14(木) 11:12:03 ID:???
>>6
おっさんの体型、変じゃね?
9nobodyさん:2006/09/23(土) 11:26:27 ID:???
えっとあるフラッシュ内から特定のフラッシュを見つけ出すスクリプト作ってください。
たとえば、
http://www.livly.com/mypage.php?uid=1Q9u
から
http://www.livly.com/mypage.php?uid=3Q9u
のなかの
http://www.livly.com/item/musikui.swfが含まれているswfを表示するようなスクリプトです
宜しくお願いします。
10nobodyさん:2006/09/24(日) 05:02:41 ID:???
>>9
パケモンでも使っとけ糞マルチ
11nobodyさん:2007/02/01(木) 10:19:56 ID:NLH+CAqc
age
12nobodyさん:2007/02/25(日) 14:22:03 ID:XAraiK/y
作りかけの出したら殴り殺される?
13nobodyさん:2007/02/25(日) 16:17:01 ID:???
>>12
ごりあえず、だしてみ?
14nobodyさん:2007/02/26(月) 11:12:40 ID:???
>>12
ぜんぜんおk
15nobodyさん:2007/02/26(月) 12:13:42 ID:???
>>14
係り受けがおかしい。
本来は「全然〜ない」のような形で全否定を表すのが正しい。

「全然OK」→「全然問題ない」
16nobodyさん:2007/02/26(月) 17:26:00 ID:???
いつの人間だよ
頭カチカチだな
17nobodyさん:2007/02/26(月) 19:07:52 ID:???
>>12
んで、ただの釣りだたわけか?
18nobodyさん:2007/03/01(木) 13:01:51 ID:vHXjUYFX
aage
19nobodyさん:2007/03/05(月) 19:09:42 ID:???
sage
20nobodyさん:2007/03/10(土) 13:55:26 ID:???
sage
21晒します:2007/03/19(月) 18:09:19 ID:???
<?php
for($i=1;$i<1001;$i++){
print ">>$i";
print "ぬるぽ";
}
?>
22nobodyさん:2007/03/21(水) 11:05:07 ID:???
>>17さん
すいません、仕事が忙しくて遅々として進まないのでorz
まだ2%ぐらいしかできてないんで、もうちょい作ってからにしますorz
23nobodyさん:2007/03/27(火) 19:37:13 ID:???
にぱー!!!!1
24nobodyさん:2007/04/05(木) 10:05:52 ID:???
あげ
25nobodyさん:2007/04/05(木) 18:23:24 ID:qzUTLqFO
今はソースしか出せない状況だけどソースだしたら添削してくれるかい?
ちなみに環境はlinux+mysql+symfonyで作ったsymfony用のサンプルコードなんだが
26nobodyさん:2007/04/09(月) 14:51:21 ID:???
>>25
まずはさらせ。話はそれからだ。
27age:2007/04/09(月) 17:27:25 ID:Om+VcTLy
>>26
まあ、じゃあひとまず晒してみるよ。
解凍パスはsampleね
ttp://www.csync.net/service/file/view.cgi?id=1176107178

ソースしか出せないから動作確認とかは各人でやってみてくれると嬉しい。
pearとsymfonyのパスの設定ファイルを各人の環境に書き換えて
DB接続のconfファイル書き直して
data/sql/lib.model.schema.sqlをDBに流し込んで
ちなみに俺の環境はDBの名前はsymfonySampleな、変える場合は各人設定ファイルの変更よろ
DBはmysql以外を使う場合は設定ファイルを書き直してくれ
ドキュメントルートはweb/index.phpで.htaccess読むように設定してrewriteモジュール入れて、
バーチャルホストで Alias /sf symfonyパス/web/sf
あとキャッシュフォルダとかはパーミッション777ね
ぱっと思いつく設定書いたけど不十分かもしれないからあとは各々自分の環境にあわせてくださいな。

自分的にはindexのアクション1つで作ったのとかアホとしか思えない作りになってしまった点がかなり問題くさいと思う
あとログイン認証がおそまつすぎるかな
何でユーザー認証つきの掲示板かというとDBからselectする時にjoinのやり方も勉強したかったから
意味なさげだったけど無理やりテーブル2個にして表示も2個のテーブルからデータ拾う形にした

symfony使って何か作るの初めてだったから何か問題点とかあったら教えてくれれ
28nobodyさん:2007/04/10(火) 12:37:52 ID:???
正直、めんどくさい
具体的に、どこ見て欲しいとかあったほうがいいのでは
29nobodyさん:2007/04/15(日) 10:51:26 ID:klTQuJOW
せめて作品の概説を書いて欲しかった。
30nobodyさん:2007/04/18(水) 14:23:24 ID:cedydNy8
age
31nobodyさん:2007/05/07(月) 18:17:56 ID:HYJOkdGm
ほしゅ。しておくか。
32nobodyさん:2007/05/07(月) 18:36:33 ID:8mOiui5O
サーバーからクライアントのファイルの取得

質問ですが、サーバーからクライアントの特定のフォルダーのテキストファイルをアップする方法がわかりません。
通常アップロードするときに良くある「参照」と書かれたボタンをクリックするとファイルの選択の画面が開き
ファイルを指定して「アップロード」ボタンを押してアップロードさせる方法がありますが、
一連の作業(「参照」、「アップロード」)をしないでクライアントの特定のフォルダーのテキストファイルをアップする方法を教えてください。

因みに通常のアップロード
print("<form enctype=\"multipart/form-data\" action=\"xxxxxxxx.php\" method=\"post\">");
print("<INPUT TYPE=\"hidden\" name=\"MAX_FILE_SIZE\" value=\"5000000\">");
print("<INPUT TYPE=\"file\" name=\"UserFile\">");
print("<INPUT TYPE=submit name=\"sub\" value=アップロード>");
print("</form>");
33nobodyさん:2007/05/07(月) 21:04:25 ID:???
悪用するから教えてあげないよ
34nobodyさん:2007/05/07(月) 22:40:37 ID:???
>>32
それあぼーんだょ
35nobodyさん:2007/05/08(火) 16:54:48 ID:???
    FOX★公認!今世紀最大の祭り!!!
俺たちのクリックで日本を一位にしようぜ!!
“30年は日本に手は出せないな”という勝ち方をしたい
http://wwwww.2ch.net/test/read.cgi/news4vip/1178602852/

1. チリ 136,836,018
2. ポーランド 135,173,390
3. イスラエル 80,308,719
4. ★日本 71,029,997★
5. スロベニア 56,818,986
6. フィンランド 40,275,252
石を投げる戦争から人は進化・進歩を遂げ、剣や槍などの武器をもって戦うようになった
人間はさらに発展し兵器を使う戦争を始めた
そして今、指先一つを武器とした電脳戦争が勃発したのであった・・・
皇国を勝利へと導くには貴様らの参戦が不可欠である
・戦場
http://www.clickclickclick.com/default.asp
・まとめサイト
http://www33.atwiki.jp/clickvip/
・mixi
http://mixi.jp/view_community.pl?id=2141035
36nobodyさん:2007/05/15(火) 17:38:37 ID:???
     *      *
  *  あげです   +  
     n ∧_∧ n
 + (ヨ(* ´∀`)E)
      Y     Y    *
37nobodyさん:2007/05/18(金) 19:33:05 ID:vYBK1HW2
     *      *
  *  あげです   +  
     n ∧_∧ n
 + (ヨ(* ´∀`)E)
      Y     Y    *
38nobodyさん:2007/05/25(金) 00:20:30 ID:???
     *      *
  *  メガデス   +  
     n ∧_∧ n
 + (ヨ(* ´∀`)E)
      Y     Y    *
39nobodyさん:2007/06/01(金) 19:19:25 ID:3y0dLYvG
     *      *
  *  ジャコパス  +  
     n ∧_∧ n
 + (ヨ(* ´∀`)E)
      Y     Y    *
40nobodyさん:2007/06/11(月) 13:51:35 ID:+sUSdk/e
?>
age
<?php
41nobodyさん:2007/06/13(水) 14:17:02 ID:???
class 2cher{
42nobodyさん:2007/06/15(金) 22:44:14 ID:0LRe+Y6N
// do nothing...
}
43nobodyさん:2007/06/25(月) 22:26:56 ID:???
ワラタ
44nobodyさん:2007/06/26(火) 18:57:07 ID:s3riC2lT
?>
Parse error: parse error, unexpected T_STRING 'ワラタ' in line >>43
45nobodyさん:2007/06/26(火) 18:57:38 ID:???
>>44
ツマンネ
46835:2007/07/25(水) 12:51:04 ID:XbSTHe/P
age
47nobodyさん ◆nKbmquMKd2 :2007/07/27(金) 15:58:52 ID:???
age
48nobodyさん:2007/07/27(金) 20:55:42 ID:vcSWcDTg
【PHP】下らねぇ質問はここに書き込みやがれ 51
http://pc11.2ch.net/test/read.cgi/php/1185521566/
ここから誘導していただきました。ありがとうございました。

初めてPHPに挑戦してみたのですが、
どうしても動かない関数がでてきてしまいました。
自分では何度もチェックをしているのですが、
プログラム自体が初心者なのでなに根本的な間違いを
犯しているかもしれません。
恐れ入りますがどなたかお力添えを頂けないでしょうか?

ttp://www-2ch.net:8080/up/download/1185537177159734.kDjOMz
49nobodyさん:2007/07/27(金) 22:16:20 ID:???
>>48
foreachの使い方が間違ってる気がする。
50nobodyさん:2007/07/28(土) 01:54:15 ID:ErWRhjGm
>>49
ありがとうございます。
ご指摘の通り間違っていました。
そのあと色々大きな間違いや小さな間違いを直したりして、
どうにか一応は改良できました。
あとは編集したデータが何故か書き込めないという問題さえ解決できれば完成です。
とりあえず今夜は眠って、明日またパーミッションなどを勉強し直します。
本当にありがとうございました。

一応、現在のものをおいておきます。
ttp://www-2ch.net:8080/up/download/1185555098879782.h1mh74
5148:2007/07/28(土) 13:13:30 ID:ErWRhjGm
解決しました。
……ファイルのパスが間違ってましたorz
お騒がせして申し訳ありません。
本当にありがとうございました。
52nobodyさん:2007/07/28(土) 13:35:46 ID:???
ズコー
53nobodyさん:2007/08/16(木) 20:52:08 ID:WHzWpCp7
【設置場所】 http://wing2.jp/~lineage2revenge/d/uproda.php
【ソース】 http://example.com/test.txt
【プログラミング経験】 5ヶ月
【希望評価スタイル】 悪い部分を指摘して欲しい / 良い部分を指摘して欲しい
【自分の性格】 かかってこいや! / またーり / 叩かれると自殺しちゃうかも
【備考】

エロ画像弾くうpローダー
54nobodyさん:2007/08/16(木) 21:29:05 ID:???
ソース見れねーよバーヤ
55nobodyさん:2007/08/16(木) 21:29:18 ID:???
>>53
バロスwww
フィルタ部分ソースキボンwww
56nobodyさん:2007/08/18(土) 14:01:53 ID:???
>>53
乳首まではセーフなのか?
57nobodyさん:2007/08/18(土) 15:20:40 ID:???
水着とかもダメだったから、肌の部分?が多いとダメなんだと思われ。
58nobodyさん:2007/08/18(土) 17:50:00 ID:???
確かにAVのパッケージは駄目だった
59nobodyさん:2007/08/18(土) 22:46:03 ID:Zb55oXWt
これは面白いなw
60nobodyさん:2007/08/19(日) 19:10:17 ID:???
hogehoge.abc.jpgみたいなファイル名だと弾かれるね
61nobodyさん:2007/10/06(土) 05:01:11 ID:???
>>53
フィルタ部分わかれば逆バージョン作れそうだ
62nobodyさん:2007/10/08(月) 09:31:32 ID:???
血とおばあちゃんを弾くようにしないとな
63nobodyさん:2008/02/17(日) 22:07:44 ID:w4j+vVbn BE:422823247-PLT(12230)
age
64nobodyさん:2008/11/07(金) 14:55:45 ID:4VTuoj+z
>>53
一年以上前のだけど、まだ稼動してるんだなw
こういう発想大好きだww
65nobodyさん:2008/11/15(土) 22:57:08 ID:???
【内容】 ファイルアップローダ
【設置場所】 http://lcdata.ddo.jp:8080/2ch/upload/
【ソース】 これから作るんです
【プログラミング経験】 ないしょ
【希望評価スタイル】 機能のアイディアがほしいな(シンプル指向で考えてます)
【自分の性格】 またーり
【備考】 B90/W58/H86 です。
66nobodyさん:2008/11/15(土) 23:15:43 ID:???
>>65
スレ違い
67nobodyさん:2008/11/16(日) 16:05:49 ID:???
>>66
失礼しました。
68nobodyさん:2008/11/17(月) 03:02:43 ID:DKgH+i/4
じゃあ、
【PHP】下らねぇ質問はID出して書き込みやがれ 76
http://pc11.2ch.net/test/read.cgi/php/1226517332/
このスレッドを1時間に1回監視して、
書き込みがあったら、
番号、名前、さげ、年月日時間、ID、内容
をテキストファイルに追記していく。
アボーンがあったら、何番がアボーンになったと記録する。
そんな、PHPスクリプトを自作してここで発表して下さい。
お願いします!!
69nobodyさん:2008/11/17(月) 04:09:29 ID:???
>>68
それって、スレを丸ごとファイルに保存するのと何か違うの??
7068:2008/11/17(月) 05:05:35 ID:DKgH+i/4
>>69
・PHPの技術力が違う
・エレガントさが違う
それに一番大事なのは、
1日1回、スレを丸ごと保存し、古いのを捨てる、ってやり方があるけど、
それだと、アボーンに何が書いてあったかわからないのです。
よろしくお願いします!!
71nobodyさん:2008/11/17(月) 05:12:05 ID:???
>>70
要するにあぼーんされた部分を残しときゃいいってこと?
あぼーん以外を保存しときゃあとから参照できるような気がするけど・・・

■番号、名前、さげ、年月日時間、ID、内容をテキストファイルに追記していく。
■アボーンがあったら、何番がアボーンになったと記録する。

↑この2つはフォーマットが全然違うと思うけど、そのへん何か考えてます?

あと、1時間に1回って処理をしようと思ったらcronとか使うと思うけど大丈夫ですか?
7268:2008/11/17(月) 05:22:04 ID:???
>>71
> 要するにあぼーんされた部分を残しときゃいいってこと?
そうです。

> ■番号、名前、さげ、年月日時間、ID、内容をテキストファイルに追記していく。
> ■アボーンがあったら、何番がアボーンになったと記録する。
>
> ↑この2つはフォーマットが全然違うと思うけど、そのへん何か考えてます?
いえ、考えてません。

> あと、1時間に1回って処理をしようと思ったらcronとか使うと思うけど大丈夫ですか?
cronを知らないのでなんとも言えません。
ただ、winXPのパソコンを24時間立ち上げておくことは可能です。
73nobodyさん:2008/11/17(月) 05:30:09 ID:???
>>72
http://lcdata.ddo.jp:8080/2ch/1156116687/68/
↑ここで作ってます。
7時までにできなかったら仕事に出動orz
ニートになって趣味プログラミングに没頭したいなぁ。
7468:2008/11/17(月) 05:34:40 ID:???
>>73
おお、よろしくお願いします。
75nobodyさん:2008/11/17(月) 05:52:05 ID:???
メアドがテスト用にあぼーんになってたことに気づいたorz

>>74
ごめん、あぼーんって動作テストできないってことに気づいた。
肝心のあぼーん部分がほとんど検証できてないです。

一応ソース↓
http://lcdata.ddo.jp:8080/2ch/1156116687/68/index.phps

1.自分のPCにWeb鯖を立てる。
2.↑のスクリプトを設置する。
3.ブラウザから何度かアクセスして、以下のCSVファイルを吐くことを確認する。
  (1)現在のスレの内容(ただしあぼーん以外/あぼーんされたレスは「あぼーん」って文字が追加される)
  (2)前回のアクセスから増えているレスの内容
4.cronが使えない環境みたいなので、「コントロールパネル>タスク」を使って1時間ごとにアクセスするようにがんばる。

スクリプトがまともに動くなら、CSVファイルからあぼーんされたレスを
抽出するスクリプトを組むのは簡単だと思う。
76nobodyさん:2008/11/17(月) 06:02:37 ID:???
ごめん、あぼーんのとこミスしてた。
たぶんもう大丈夫だと思います。
ソースは↑のやつを更新しました。
7768:2008/11/17(月) 06:48:24 ID:???
>>75
おお、有り難うございます。すごいですね。
なにはともあれ、1226517332_new.txtというファイルが出来て、そこにデータが全部入ってるみたいです。感謝、感謝です。
ただ、↓のエラーがどっちゃりでてます。

Notice: Undefined offset: 1 in C:\php\ThreadKeep.php on line 34
Notice: Undefined index: abone in C:\php\ThreadKeep.php on line 72
7868:2008/11/17(月) 06:52:49 ID:???
$new_csv[$num]["mail"] = $matches[1];   これが34行目です。
if (!$value["abone"]) {          これが72行目です。
79nobodyさん:2008/11/17(月) 06:57:43 ID:???
>>77
Noticeなのでエラーではなく通知ですね。
PHPの設定で、エラーを拾うレベルが高すぎるんだと思います。
php.iniの「error_reporting」の箇所を↓に修正して、Noticeがでないようにできます。

error_reporting = E_ALL & ~E_NOTICE

エラーはふつうに表示されるのでご安心を。
ホントはNoticeも出ないように作るべきなんだろうけど時間切れです、すいません。
8068:2008/11/17(月) 07:05:46 ID:???
>>79
了解しました。有り難うございました。感謝、感謝です。
81nobodyさん:2008/11/17(月) 12:27:58 ID:???
>>65はどうなったの?
82nobodyさん:2008/11/17(月) 20:12:35 ID:???
>>81
まだ作りはじめたとこで、アップローダのアもできてない状態です。
おもっくそスレ違いで申し訳なかったです。
83nobodyさん:2008/11/17(月) 22:47:09 ID:???
>>80
あぼーんされたレスだけを別ファイルに保存するようにしてみた。
ソースは同じとこです。
Noticeが出るのは放置してます。
84nobodyさん:2008/11/18(火) 00:00:51 ID:???
ファイルアップローダ程度でDB使うのってどう思いますか?
できるだけ環境を選ばず設置できるようにしたいので使いたくないんですが、
コーディングの煩雑さとパフォーマンスの誘惑に負けそうです。
僕もそうだったけど、「DBって何?聞いたことあるけど」って人は多いですよね。
敷居下げるならDBなしなのかなぁ・・・。
85nobodyさん:2008/11/18(火) 02:18:16 ID:???
ファイルベースが特段煩雑とも思わんが・・・。
素人向けのレンタルスペースでも動くスクリプトを配布したいんなら無しでしょうね。
ただPHPが動くレンタルサーバでDBが入ってないとこなんてあんの?知らないけど。
どちらも押さえときたいなら両方作って配布するとか。
86nobodyさん:2008/11/18(火) 07:15:17 ID:???
>>85
なるほど。
でもやっぱSELECTの手軽さは魅力だと思います。
DBばっか使ってるからファイルベースだとCSVしか思いつかなくて・・・。
ただ、アップローダは自鯖ってのが基本だと思ってます。
XAMPPとか使ってとりあえずDB入れたけど、使い方はさっぱりって人は多いと思うなぁ。
ってことでファイルベースでやってみます。
どうでもいいけど、前スレ見てたら以前もアップローダ作ってたこと思い出したw
完成したんだっけかなぁ・・・。
87>>65:2008/11/24(月) 21:25:23 ID:???
ものすごくどうでもいいことですが、
ルータを買ったらDDNSに対応してたので、URLを変更しちゃいました。
>>65のアップローダは↓で作成中です。
ttp://lcdata.ath.cx:8080/2ch/upload/
88nobodyさん:2008/11/25(火) 20:18:05 ID:???
>>87
見れねーよ?
完成したん?
89>>65:2008/11/25(火) 22:54:07 ID:???
>>88
すいません、またまたURLを変更しました。
ttp://lcdata.ath.cx/2ch/upload/
こっちでやってます。
まだ作りかけです。
なんでポート80番が使えないんだろ?
とか思ってたんですが、スカイプが使ってることに気づいたのでorz
9068: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;
}}}
9168: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の変数のそれぞれの違いがわからないのです。
92>>65: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は出なくなると思います。
93>>65:2008/11/26(水) 23:04:25 ID:???
超適当に説明しておくと・・・
まず、このスレのソースコードを見てみてください。
各レスが「<dt>〜」って1行になってるのがわかると思います。
まず、$matchesにその各レスが入ります。
$matches[1]には、「"/^(\d*)/"」などの1番目のカッコの中身が入ります。
そんでもって、さらにそのレスに対してpreg_matchをすることによって、
レス番号とか名前とかを切り出してるんです。
$matches[1]をわざわざ$resって変数に入れてるのは特に意味はありません。
9468: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は出なくなると思います。
有り難うございます。
95nobodyさん:2008/11/27(木) 10:46:47 ID:QDCpWLvT
俺はこれ
error_reporting(E_ALL);

面倒だけど変数をまとめて設定する癖がつくから後々楽だぞ
96>>65:2008/11/27(木) 20:06:40 ID:???
>>95
僕も余裕があればデバッグ中はそうするように心がけてみます。
PHPしか知らないから、変数の宣言とか型とかいい加減な扱いするクセついちゃったなぁ。
97nobodyさん:2008/11/27(木) 20:12:41 ID:???
開発機のphp.iniで設定しときゃいいじゃん
98>>65:2008/11/27(木) 20:18:28 ID:???
>>97
そうですね。
他に何に使ってるわけでもないWeb鯖だし、それでいいと思います。
僕はいつも、↓みたいな感じでログを流しながら作業してます。
tail -f /apache/log/error_log
Windowsで似たようなことってできるのかなぁ。
Cygwinとか試してみよう。
99nobodyさん: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で作りました。どうも保守性が悪いような気がするので、
悪い部分があったら指摘してほしいです。
100nobodyさん:2009/05/21(木) 01:39:47 ID:???
悪い部分って?
101nobodyさん:2009/05/21(木) 10:06:33 ID:???
>>99
HTMLのエスケープはPHP側でやったほうがいいよ
あとちゃんと見てないからよくわからんが、今HTTPヘッダで取ってくるログを判別してるみたいだけど、
それもPHP経由で重複したデータを取ってこないように。
102nobodyさん:2009/05/30(土) 11:37:25 ID:???
>99
暇だから見てみるか。
とりあえず3秒見たところだが、enter.phpにXSSな。htmlspecialchars()かけろ。
103nobodyさん: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)してはいけない。「鍵を開けた後、ファイルを閉める」までの間にファイルが破壊される。
単に閉じれば安全な形でロックが開放される。
104nobodyさん: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();
とかなってれば、この部分をざっと見るだけでおおざっぱな処理の流れが見て取れるようになる。
105nobodyさん:2009/05/30(土) 16:37:24 ID:???
>>103
99じゃないけど
> flock($fp, LOCK_UN)してはいけない。
これは以外だった。ちょっと調べてみよ。
106 【23.9m】 電脳プリオン:2012/05/06(日) 15:00:42.23 ID:??? BE:81081942-PLT(12079)

  ∧_∧
  ( ・∀・)            人 ガッ
  (    つ―-‐-‐-‐-‐-‐○ <  >__Λ∩
  人 Y ノ.             V`Д´)/
  し(_)                  /  ←>>21
107島本町で凄惨なイジメを受けて廃人になった方へ
>大阪府三島郡島本町の小学校や中学校は、暴力イジメ学校や。
島本町の学校でいじめ・暴力・脅迫・恐喝などを受け続けて廃人になってしもうた僕が言うんやから、
まちがいないで。僕のほかにも、イジメが原因で精神病になったりひきこもりになったりした子が何人もおる。
教師も校長も、暴力やいじめがあっても見て見ぬフリ。イジメに加担する教師すらおった。
誰かがイジメを苦にして自殺しても、「本校にイジメはなかった」と言うて逃げるんやろうなあ。
島本町の学校の関係者は、僕を捜し出して口封じをするな

子供の時に受けた酷いイジメの体験は、一生癒えない深い傷になる
「暴力とイジメと口裏合わせと口封じ」の町やそういう町に巣食うヤクザ・チンピラ・ゴロツキ・不良・
いじめっ子・殺人鬼・ダニ・ノミ・シラミなどを監視して非難するのは暮らしやすい町を作るのに必要だ