1 :
1様:
>>1 早漏乙
勉強系なのか批判系なのか自慢系なのかそのへん決めた方がいいんじゃね?
潰し系。
新感覚癒し系発表会。
スリーサイズは必須な。
11 :
nobodyさん:2007/02/01(木) 10:19:56 ID:NLH+CAqc
age
12 :
nobodyさん:2007/02/25(日) 14:22:03 ID:XAraiK/y
作りかけの出したら殴り殺される?
>>14 係り受けがおかしい。
本来は「全然〜ない」のような形で全否定を表すのが正しい。
「全然OK」→「全然問題ない」
いつの人間だよ
頭カチカチだな
18 :
nobodyさん:2007/03/01(木) 13:01:51 ID:vHXjUYFX
aage
sage
sage
21 :
晒します:2007/03/19(月) 18:09:19 ID:???
<?php
for($i=1;$i<1001;$i++){
print ">>$i";
print "ぬるぽ";
}
?>
>>17さん
すいません、仕事が忙しくて遅々として進まないのでorz
まだ2%ぐらいしかできてないんで、もうちょい作ってからにしますorz
にぱー!!!!1
あげ
25 :
nobodyさん:2007/04/05(木) 18:23:24 ID:qzUTLqFO
今はソースしか出せない状況だけどソースだしたら添削してくれるかい?
ちなみに環境はlinux+mysql+symfonyで作ったsymfony用のサンプルコードなんだが
27 :
age: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使って何か作るの初めてだったから何か問題点とかあったら教えてくれれ
正直、めんどくさい
具体的に、どこ見て欲しいとかあったほうがいいのでは
29 :
nobodyさん:2007/04/15(日) 10:51:26 ID:klTQuJOW
せめて作品の概説を書いて欲しかった。
30 :
nobodyさん:2007/04/18(水) 14:23:24 ID:cedydNy8
age
31 :
nobodyさん:2007/05/07(月) 18:17:56 ID:HYJOkdGm
ほしゅ。しておくか。
32 :
nobodyさん: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>");
悪用するから教えてあげないよ
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
* *
* あげです +
n ∧_∧ n
+ (ヨ(* ´∀`)E)
Y Y *
37 :
nobodyさん:2007/05/18(金) 19:33:05 ID:vYBK1HW2
* *
* あげです +
n ∧_∧ n
+ (ヨ(* ´∀`)E)
Y Y *
* *
* メガデス +
n ∧_∧ n
+ (ヨ(* ´∀`)E)
Y Y *
39 :
nobodyさん:2007/06/01(金) 19:19:25 ID:3y0dLYvG
* *
* ジャコパス +
n ∧_∧ n
+ (ヨ(* ´∀`)E)
Y Y *
40 :
nobodyさん:2007/06/11(月) 13:51:35 ID:+sUSdk/e
?>
age
<?php
class 2cher{
42 :
nobodyさん:2007/06/15(金) 22:44:14 ID:0LRe+Y6N
// do nothing...
}
ワラタ
44 :
nobodyさん:2007/06/26(火) 18:57:07 ID:s3riC2lT
?>
Parse error: parse error, unexpected T_STRING 'ワラタ' in line
>>43
46 :
835:2007/07/25(水) 12:51:04 ID:XbSTHe/P
age
age
48 :
nobodyさん:2007/07/27(金) 20:55:42 ID:vcSWcDTg
>>48 foreachの使い方が間違ってる気がする。
50 :
nobodyさん:2007/07/28(土) 01:54:15 ID:ErWRhjGm
51 :
48:2007/07/28(土) 13:13:30 ID:ErWRhjGm
解決しました。
……ファイルのパスが間違ってましたorz
お騒がせして申し訳ありません。
本当にありがとうございました。
ズコー
53 :
nobodyさん:2007/08/16(木) 20:52:08 ID:WHzWpCp7
ソース見れねーよバーヤ
>>53 バロスwww
フィルタ部分ソースキボンwww
水着とかもダメだったから、肌の部分?が多いとダメなんだと思われ。
確かにAVのパッケージは駄目だった
59 :
nobodyさん:2007/08/18(土) 22:46:03 ID:Zb55oXWt
これは面白いなw
hogehoge.abc.jpgみたいなファイル名だと弾かれるね
>>53 フィルタ部分わかれば逆バージョン作れそうだ
血とおばあちゃんを弾くようにしないとな
63 :
nobodyさん:2008/02/17(日) 22:07:44 ID:w4j+vVbn BE:422823247-PLT(12230)
age
64 :
nobodyさん:2008/11/07(金) 14:55:45 ID:4VTuoj+z
>>53 一年以上前のだけど、まだ稼動してるんだなw
こういう発想大好きだww
68 :
nobodyさん:2008/11/17(月) 03:02:43 ID:DKgH+i/4
>>68 それって、スレを丸ごとファイルに保存するのと何か違うの??
70 :
68:2008/11/17(月) 05:05:35 ID:DKgH+i/4
>>69 ・PHPの技術力が違う
・エレガントさが違う
それに一番大事なのは、
1日1回、スレを丸ごと保存し、古いのを捨てる、ってやり方があるけど、
それだと、アボーンに何が書いてあったかわからないのです。
よろしくお願いします!!
>>70 要するにあぼーんされた部分を残しときゃいいってこと?
あぼーん以外を保存しときゃあとから参照できるような気がするけど・・・
■番号、名前、さげ、年月日時間、ID、内容をテキストファイルに追記していく。
■アボーンがあったら、何番がアボーンになったと記録する。
↑この2つはフォーマットが全然違うと思うけど、そのへん何か考えてます?
あと、1時間に1回って処理をしようと思ったらcronとか使うと思うけど大丈夫ですか?
72 :
68:2008/11/17(月) 05:22:04 ID:???
>>71 > 要するにあぼーんされた部分を残しときゃいいってこと?
そうです。
> ■番号、名前、さげ、年月日時間、ID、内容をテキストファイルに追記していく。
> ■アボーンがあったら、何番がアボーンになったと記録する。
>
> ↑この2つはフォーマットが全然違うと思うけど、そのへん何か考えてます?
いえ、考えてません。
> あと、1時間に1回って処理をしようと思ったらcronとか使うと思うけど大丈夫ですか?
cronを知らないのでなんとも言えません。
ただ、winXPのパソコンを24時間立ち上げておくことは可能です。
74 :
68:2008/11/17(月) 05:34:40 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ファイルからあぼーんされたレスを
抽出するスクリプトを組むのは簡単だと思う。
ごめん、あぼーんのとこミスしてた。
たぶんもう大丈夫だと思います。
ソースは↑のやつを更新しました。
77 :
68: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
78 :
68:2008/11/17(月) 06:52:49 ID:???
$new_csv[$num]["mail"] = $matches[1]; これが34行目です。
if (!$value["abone"]) { これが72行目です。
>>77 Noticeなのでエラーではなく通知ですね。
PHPの設定で、エラーを拾うレベルが高すぎるんだと思います。
php.iniの「error_reporting」の箇所を↓に修正して、Noticeがでないようにできます。
error_reporting = E_ALL & ~E_NOTICE
エラーはふつうに表示されるのでご安心を。
ホントはNoticeも出ないように作るべきなんだろうけど時間切れです、すいません。
80 :
68:2008/11/17(月) 07:05:46 ID:???
>>79 了解しました。有り難うございました。感謝、感謝です。
>>81 まだ作りはじめたとこで、アップローダのアもできてない状態です。
おもっくそスレ違いで申し訳なかったです。
>>80 あぼーんされたレスだけを別ファイルに保存するようにしてみた。
ソースは同じとこです。
Noticeが出るのは放置してます。
ファイルアップローダ程度でDB使うのってどう思いますか?
できるだけ環境を選ばず設置できるようにしたいので使いたくないんですが、
コーディングの煩雑さとパフォーマンスの誘惑に負けそうです。
僕もそうだったけど、「DBって何?聞いたことあるけど」って人は多いですよね。
敷居下げるならDBなしなのかなぁ・・・。
ファイルベースが特段煩雑とも思わんが・・・。
素人向けのレンタルスペースでも動くスクリプトを配布したいんなら無しでしょうね。
ただPHPが動くレンタルサーバでDBが入ってないとこなんてあんの?知らないけど。
どちらも押さえときたいなら両方作って配布するとか。
>>85 なるほど。
でもやっぱSELECTの手軽さは魅力だと思います。
DBばっか使ってるからファイルベースだとCSVしか思いつかなくて・・・。
ただ、アップローダは自鯖ってのが基本だと思ってます。
XAMPPとか使ってとりあえずDB入れたけど、使い方はさっぱりって人は多いと思うなぁ。
ってことでファイルベースでやってみます。
どうでもいいけど、前スレ見てたら以前もアップローダ作ってたこと思い出したw
完成したんだっけかなぁ・・・。
87 :
>>65:2008/11/24(月) 21:25:23 ID:???
89 :
>>65:2008/11/25(火) 22:54:07 ID:???
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;
}}}
91 :
68:2008/11/26(水) 15:45:19 ID:yZjcfnV8
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って変数に入れてるのは特に意味はありません。
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は出なくなると思います。
有り難うございます。
95 :
nobodyさん:2008/11/27(木) 10:46:47 ID:QDCpWLvT
俺はこれ
error_reporting(E_ALL);
面倒だけど変数をまとめて設定する癖がつくから後々楽だぞ
96 :
>>65:2008/11/27(木) 20:06:40 ID:???
>>95 僕も余裕があればデバッグ中はそうするように心がけてみます。
PHPしか知らないから、変数の宣言とか型とかいい加減な扱いするクセついちゃったなぁ。
開発機のphp.iniで設定しときゃいいじゃん
98 :
>>65:2008/11/27(木) 20:18:28 ID:???
>>97 そうですね。
他に何に使ってるわけでもないWeb鯖だし、それでいいと思います。
僕はいつも、↓みたいな感じでログを流しながら作業してます。
tail -f /apache/log/error_log
Windowsで似たようなことってできるのかなぁ。
Cygwinとか試してみよう。
99 :
nobodyさん:2009/05/19(火) 20:17:57 ID:D1418Uic
悪い部分って?
>>99 HTMLのエスケープはPHP側でやったほうがいいよ
あとちゃんと見てないからよくわからんが、今HTTPヘッダで取ってくるログを判別してるみたいだけど、
それもPHP経由で重複したデータを取ってこないように。
>99
暇だから見てみるか。
とりあえず3秒見たところだが、enter.phpにXSSな。htmlspecialchars()かけろ。
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)してはいけない。「鍵を開けた後、ファイルを閉める」までの間にファイルが破壊される。
単に閉じれば安全な形でロックが開放される。
メイン処理($_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();
とかなってれば、この部分をざっと見るだけでおおざっぱな処理の流れが見て取れるようになる。
>>103 99じゃないけど
> flock($fp, LOCK_UN)してはいけない。
これは以外だった。ちょっと調べてみよ。
∧_∧
( ・∀・) 人 ガッ
( つ―-‐-‐-‐-‐-‐○ < >__Λ∩
人 Y ノ. V`Д´)/
し(_) / ←
>>21
107 :
島本町で凄惨なイジメを受けて廃人になった方へ:
>大阪府三島郡島本町の小学校や中学校は、暴力イジメ学校や。
島本町の学校でいじめ・暴力・脅迫・恐喝などを受け続けて廃人になってしもうた僕が言うんやから、
まちがいないで。僕のほかにも、イジメが原因で精神病になったりひきこもりになったりした子が何人もおる。
教師も校長も、暴力やいじめがあっても見て見ぬフリ。イジメに加担する教師すらおった。
誰かがイジメを苦にして自殺しても、「本校にイジメはなかった」と言うて逃げるんやろうなあ。
島本町の学校の関係者は、僕を捜し出して口封じをするな
子供の時に受けた酷いイジメの体験は、一生癒えない深い傷になる
「暴力とイジメと口裏合わせと口封じ」の町やそういう町に巣食うヤクザ・チンピラ・ゴロツキ・不良・
いじめっ子・殺人鬼・ダニ・ノミ・シラミなどを監視して非難するのは暮らしやすい町を作るのに必要だ