1read 100read
2013年06月WebProg484: 第二回 自作スクリプト発表会【PHP】 (106) TOP カテ一覧 スレ一覧 2ch元 削除依頼
Velocity vs JSPでVelocityを称えるスレ (119)
WEBプログラマ25歳定年説 (181)
2ch全板人気トーナメントでWebProg板を1位にしよう! (172)
PHPって遅くねぇか? (103)
PHP+MySQlでCMSっぽいものを (134)
CGIとJSPとPHPどれが得か? (177)

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


1 :2006/08/21 〜 最終レス :2012/05/06
自分が書いたPHPスクリプトを発表するスレ。
初心者が書いた入門スクリプト、ベテランが書いたすげースクリプトを発表してね。
予めスクリプトの内容を明記してURLを貼り付けるのがよろしいかと。
マターリ進行でいきませう。

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

Warning: 発表の場は、学びの場。クレクレ君は他所へ。

2 :
>>1
R乙
勉強系なのか批判系なのか自慢系なのかそのへん決めた方がいいんじゃね?

3 :
潰し系。

4 :
新感覚癒し系発表会。

5 :
>>4
ちょ

6 :
テンプレ:
【設置場所】 http://example.com/test.php
【ソース】 http://example.com/test.txt
【プログラミング経験】 3ヶ月 / 1年 / 3年
【希望評価スタイル】 悪い部分を指摘して欲しい / 良い部分を指摘して欲しい
【自分の性格】 かかってこいや! / またーり / 叩かれると自殺しちゃうかも
【備考】 B90/W58/H86 です。

7 :
スリーサイズは必須な。

8 :
>>6
おっさんの体型、変じゃね?

9 :
えっとあるフラッシュ内から特定のフラッシュを見つけ出すスクリプト作ってください。
たとえば、
http://www.livly.com/mypage.php?uid=1Q9u
から
http://www.livly.com/mypage.php?uid=3Q9u
のなかの
http://www.livly.com/item/musikui.swfが含まれているswfを表示するようなスクリプトです、
宜しくお願いします。

10 :
>>9
パケモンでも使っとけ糞マルチ

11 :
age

12 :
作りかけの出したら殴り殺される?

13 :
>>12
ごりあえず、だしてみ?

14 :
>>12
ぜんぜんおk

15 :
>>14
係り受けがおかしい。
本来は「全然〜ない」のような形で全否定を表すのが正しい。
「全然OK」→「全然問題ない」

16 :
いつの人間だよ
頭カチカチだな

17 :
>>12
んで、ただの釣りだたわけか?

18 :
aage

19 :
sage

20 :
sage

21 :
<?php
for($i=1;$i<1001;$i++){
print ">>$i";
print "ぬるぽ";
}
?>

22 :
>>17さん
すいません、仕事が忙しくて遅々として進まないのでorz
まだ2%ぐらいしかできてないんで、もうちょい作ってからにしますorz

23 :
にぱー!!!!1

24 :
あげ

25 :
今はソースしか出せない状況だけどソースだしたら添削してくれるかい?
ちなみに環境はlinux+mysql+symfonyで作ったsymfony用のサンプルコードなんだが

26 :
>>25
まずはさらせ。話はそれからだ。

27 :
>>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使って何か作るの初めてだったから何か問題点とかあったら教えてくれれ

28 :
正直、めんどくさい
具体的に、どこ見て欲しいとかあったほうがいいのでは

29 :
せめて作品の概説を書いて欲しかった。

30 :
age

31 :
ほしゅ。しておくか。

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

33 :
悪用するから教えてあげないよ

34 :
>>32
それあぼーんだょ

35 :
    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

36 :
     *      *
  *  あげです   +  
     n ∧_∧ n
 + (ヨ(* ´∀`)E)
      Y     Y    *

37 :
     *      *
  *  あげです   +  
     n ∧_∧ n
 + (ヨ(* ´∀`)E)
      Y     Y    *

38 :
     *      *
  *  メガデス   +  
     n ∧_∧ n
 + (ヨ(* ´∀`)E)
      Y     Y    *

39 :
     *      *
  *  ジャコパス  +  
     n ∧_∧ n
 + (ヨ(* ´∀`)E)
      Y     Y    *

40 :
?>
age
<?php

41 :
class 2cher{

42 :
// do nothing...
}

43 :
ワラタ

44 :
?>
Parse error: parse error, unexpected T_STRING 'ワラタ' in line >>43

45 :
>>44
ツマンネ

46 :
age

47 :
age

48 :
【PHP】下らねぇ質問はここに書き込みやがれ 51
http://pc11.2ch.net/test/read.cgi/php/1185521566/
ここから誘導していただきました。ありがとうございました。
初めてPHPに挑戦してみたのですが、
どうしても動かない関数がでてきてしまいました。
自分では何度もチェックをしているのですが、
プログラム自体が初心者なのでなに根本的な間違いを
犯しているかもしれません。
恐れ入りますがどなたかお力添えを頂けないでしょうか?
ttp://www-2ch.net:8080/up/download/1185537177159734.kDjOMz

49 :
>>48
foreachの使い方が間違ってる気がする。

50 :
>>49
ありがとうございます。
ご指摘の通り間違っていました。
そのあと色々大きな間違いや小さな間違いを直したりして、
どうにか一応は改良できました。
あとは編集したデータが何故か書き込めないという問題さえ解決できれば完成です。
とりあえず今夜は眠って、明日またパーミッションなどを勉強し直します。
本当にありがとうございました。
一応、現在のものをおいておきます。
ttp://www-2ch.net:8080/up/download/1185555098879782.h1mh74

51 :
解決しました。
……ファイルのパスが間違ってましたorz
お騒がせして申し訳ありません。
本当にありがとうございました。

52 :
ズコー

53 :
【設置場所】 http://wing2.jp/~lineage2revenge/d/uproda.php
【ソース】 http://example.com/test.txt
【プログラミング経験】 5ヶ月
【希望評価スタイル】 悪い部分を指摘して欲しい / 良い部分を指摘して欲しい
【自分の性格】 かかってこいや! / またーり / 叩かれると自殺しちゃうかも
【備考】
エロ画像弾くうpローダー

54 :
ソース見れねーよバーヤ

55 :
>>53
バロスwww
フィルタ部分ソースキボンwww

56 :
>>53
R首まではセーフなのか?

57 :
水着とかもダメだったから、肌の部分?が多いとダメなんだと思われ。

58 :
確かにAVのパッケージは駄目だった

59 :
これは面白いなw

60 :
hogehoge.abc.jpgみたいなファイル名だと弾かれるね

61 :
>>53
フィルタ部分わかれば逆バージョン作れそうだ

62 :
血とおばあちゃんを弾くようにしないとな

63 :
age

64 :
>>53
一年以上前のだけど、まだ稼動してるんだなw
こういう発想大好きだww

65 :
【内容】 ファイルアップローダ
【設置場所】 http://lcdata.ddo.jp:8080/2ch/upload/
【ソース】 これから作るんです
【プログラミング経験】 ないしょ
【希望評価スタイル】 機能のアイディアがほしいな(シンプル指向で考えてます)
【自分の性格】 またーり
【備考】 B90/W58/H86 です。

66 :
>>65
スレ違い

67 :
>>66
失礼しました。

68 :
じゃあ、
【PHP】下らねぇ質問はID出して書き込みやがれ 76
http://pc11.2ch.net/test/read.cgi/php/1226517332/
このスレッドを1時間に1回監視して、
書き込みがあったら、
番号、名前、さげ、年月日時間、ID、内容
をテキストファイルに追記していく。
アボーンがあったら、何番がアボーンになったと記録する。
そんな、PHPスクリプトを自作してここで発表して下さい。
お願いします!!

69 :
>>68
それって、スレを丸ごとファイルに保存するのと何か違うの??

70 :
>>69
・PHPの技術力が違う
・エレガントさが違う
それに一番大事なのは、
1日1回、スレを丸ごと保存し、古いのを捨てる、ってやり方があるけど、
それだと、アボーンに何が書いてあったかわからないのです。
よろしくお願いします!!

71 :
>>70
要するにあぼーんされた部分を残しときゃいいってこと?
あぼーん以外を保存しときゃあとから参照できるような気がするけど・・・
■番号、名前、さげ、年月日時間、ID、内容をテキストファイルに追記していく。
■アボーンがあったら、何番がアボーンになったと記録する。
↑この2つはフォーマットが全然違うと思うけど、そのへん何か考えてます?
あと、1時間に1回って処理をしようと思ったらcronとか使うと思うけど大丈夫ですか?

72 :
>>71
> 要するにあぼーんされた部分を残しときゃいいってこと?
そうです。
> ■番号、名前、さげ、年月日時間、ID、内容をテキストファイルに追記していく。
> ■アボーンがあったら、何番がアボーンになったと記録する。
>
> ↑この2つはフォーマットが全然違うと思うけど、そのへん何か考えてます?
いえ、考えてません。
> あと、1時間に1回って処理をしようと思ったらcronとか使うと思うけど大丈夫ですか?
cronを知らないのでなんとも言えません。
ただ、winXPのパソコンを24時間立ち上げておくことは可能です。

73 :
>>72
http://lcdata.ddo.jp:8080/2ch/1156116687/68/
↑ここで作ってます。
7時までにできなかったら仕事に出動orz
ニートになって趣味プログラミングに没頭したいなぁ。

74 :
>>73
おお、よろしくお願いします。

75 :
メアドがテスト用にあぼーんになってたことに気づいたorz
>>74
ごめん、あぼーんって動作テストできないってことに気づいた。
肝心のあぼーん部分がほとんど検証できてないです。
一応ソース↓
http://lcdata.ddo.jp:8080/2ch/1156116687/68/index.phps
1.自分のPCにWeb鯖を立てる。
2.↑のスクリプトを設置する。
3.ブラウザから何度かアクセスして、以下のCSVファイルを吐くことを確認する。
  (1)現在のスレの内容(ただしあぼーん以外/あぼーんされたレスは「あぼーん」って文字が追加される)
  (2)前回のアクセスから増えているレスの内容
4.cronが使えない環境みたいなので、「コントロールパネル>タスク」を使って1時間ごとにアクセスするようにがんばる。
スクリプトがまともに動くなら、CSVファイルからあぼーんされたレスを
抽出するスクリプトを組むのは簡単だと思う。

76 :
ごめん、あぼーんのとこミスしてた。
たぶんもう大丈夫だと思います。
ソースは↑のやつを更新しました。

77 :
>>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 :
$new_csv[$num]["mail"] = $matches[1];   これが34行目です。
if (!$value["abone"]) {          これが72行目です。

79 :
>>77
Noticeなのでエラーではなく通知ですね。
PHPの設定で、エラーを拾うレベルが高すぎるんだと思います。
php.iniの「error_reporting」の箇所を↓に修正して、Noticeがでないようにできます。
error_reporting = E_ALL & ~E_NOTICE
エラーはふつうに表示されるのでご安心を。
ホントはNoticeも出ないように作るべきなんだろうけど時間切れです、すいません。

80 :
>>79
了解しました。有り難うございました。感謝、感謝です。

81 :
>>65はどうなったの?

82 :
>>81
まだ作りはじめたとこで、アップローダのアもできてない状態です。
おもっくそスレ違いで申し訳なかったです。

83 :
>>80
あぼーんされたレスだけを別ファイルに保存するようにしてみた。
ソースは同じとこです。
Noticeが出るのは放置してます。

84 :
ファイルアップローダ程度でDB使うのってどう思いますか?
できるだけ環境を選ばず設置できるようにしたいので使いたくないんですが、
コーディングの煩雑さとパフォーマンスの誘惑に負けそうです。
僕もそうだったけど、「DBって何?聞いたことあるけど」って人は多いですよね。
敷居下げるならDBなしなのかなぁ・・・。

85 :
ファイルベースが特段煩雑とも思わんが・・・。
素人向けのレンタルスペースでも動くスクリプトを配布したいんなら無しでしょうね。
ただPHPが動くレンタルサーバでDBが入ってないとこなんてあんの?知らないけど。
どちらも押さえときたいなら両方作って配布するとか。

86 :
>>85
なるほど。
でもやっぱSELECTの手軽さは魅力だと思います。
DBばっか使ってるからファイルベースだとCSVしか思いつかなくて・・・。
ただ、アップローダは自鯖ってのが基本だと思ってます。
XAMPPとか使ってとりあえずDB入れたけど、使い方はさっぱりって人は多いと思うなぁ。
ってことでファイルベースでやってみます。
どうでもいいけど、前スレ見てたら以前もアップローダ作ってたこと思い出したw
完成したんだっけかなぁ・・・。

87 :
ものすごくどうでもいいことですが、
ルータを買ったらDDNSに対応してたので、URLを変更しちゃいました。
>>65のアップローダは↓で作成中です。
ttp://lcdata.ath.cx:8080/2ch/upload/

88 :
>>87
見れねーよ?
完成したん?

89 :
>>88
すいません、またまたURLを変更しました。
ttp://lcdata.ath.cx/2ch/upload/
こっちでやってます。
まだ作りかけです。
なんでポート80番が使えないんだろ?
とか思ってたんですが、スカイプが使ってることに気づいたのでorz

90 :
// レスごとに分解
$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 :
>>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 :
>>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 :
超適当に説明しておくと・・・
まず、このスレのソースコードを見てみてください。
各レスが「<dt>〜」って1行になってるのがわかると思います。
まず、$matchesにその各レスが入ります。
$matches[1]には、「"/^(\d*)/"」などの1番目のカッコの中身が入ります。
そんでもって、さらにそのレスに対してpreg_matchをすることによって、
レス番号とか名前とかを切り出してるんです。
$matches[1]をわざわざ$resって変数に入れてるのは特に意味はありません。

94 :
>>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 :
俺はこれ
error_reporting(E_ALL);
面倒だけど変数をまとめて設定する癖がつくから後々楽だぞ

96 :
>>95
僕も余裕があればデバッグ中はそうするように心がけてみます。
PHPしか知らないから、変数の宣言とか型とかいい加減な扱いするクセついちゃったなぁ。

97 :
開発機のphp.iniで設定しときゃいいじゃん

98 :
>>97
そうですね。
他に何に使ってるわけでもないWeb鯖だし、それでいいと思います。
僕はいつも、↓みたいな感じでログを流しながら作業してます。
tail -f /apache/log/error_log
Windowsで似たようなことってできるのかなぁ。
Cygwinとか試してみよう。

99 :
【設置場所】 http://u9.getuploader.com/kiren/
【ソース】 http://u9.getuploader.com/kiren/download/1/chat.7z
【プログラミング経験】 3ヶ月
【希望評価スタイル】 悪い部分を指摘して欲しい
【自分の性格】 またーり
【備考】
表示部分はJQUERYで、サーバーの部分はPHPで作りました。どうも保守性が悪いような気がするので、
悪い部分があったら指摘してほしいです。

100read 1read
1read 100read
TOP カテ一覧 スレ一覧 2ch元 削除依頼
【Java PHP CGI mod_perl】の使い分け for プロ (160)
今日覚えたことをメモっておけ (145)
カウンターのつけ方を教えて下さい(ド初心者です) (133)
【PHP】下らねぇ質問はID出して書き込みやがれ 128 (365)
オサーンのプログラミング奮闘記[PHP] (133)
Ruby VS PHP 仁義なき戦い (173)
--log9.info------------------
みんなの話題 トピックイット (131)
ツカサグループ代表・川又三智彦 (110)
【シムピ】マターリ感想スレ【シムズ】 (144)
【リク】Stage6 ドラマ リクエスト1【age】 (120)
さあ行こうか! ヤフー潰し喧嘩ID masaharu0529 (132)
Livedoorのトップページが見にくくなった件について (112)
μTorrent Part20 (850)
【KMC】極悪 Kyo Music City 撲滅完了 232【毛虫】 (691)
Share 成年コミック専用スレ 第590巻 (952)
【P2P】 R総合 69タシーロ 【総合】 (132)
【P2P】 PCゲーム総合スレ Vol.374 【Warez】 (513)
【褒めて】ダウソ民の為のアニメ雑談スレ4【楽しく】 (892)
Perfect Dark統合スレ Part31 (654)
晩ご飯はカレーです2476 (346)
★☆★ Perfume関連総合スレッド62 ★☆★ (550)
海外アップローダー総合★83 (677)
--log55.com------------------
もう共産主義でよくね?
柴田英里
   無 職 と 東 浩 紀
日本社会の特徴は配慮しあうこと 11
国語教育と哲学教育の関係性
内田樹6
カール・マルクス
ルドルフ・シュタイナーと人智学24