トップページ⇒php
997コメント327KB

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

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん02/03/30 11:55ID:M/C/V7hb
自分が書いたPHPスクリプトを発表するスレ。
初心者が書いた入門スクリプト、ベテランが書いたすげースクリプト。
発表してね。
予めスクリプトの内容を明記してURLを貼り付けるのがよろしいかと。
マターリ進行でいきませう。

PHPが使える無料サーバ情報(レッツPHP!):
http://php.s3.to/php/
0611nobodyさん2006/02/19(日) 14:16:37ID:???
>>610
別問題だボケ
0612nobodyさん2006/02/19(日) 14:18:28ID:???
別問題ではなく現実問題だ
0613nobodyさん2006/02/19(日) 14:29:54ID:???
少佐ソースで大満足。うぷえもん大好評!!
0614nobodyさん2006/02/19(日) 15:26:57ID:???
その綺麗なコードの物自体が存在してないからな。
文句言うぐらいなら書いて見せろ。
0615nobodyさん2006/02/19(日) 16:34:53ID:???
ここに載せるにふさわしいコード→汚いコード
0616nobodyさん2006/02/19(日) 16:44:30ID:???
汚くたっていい
需要のありそうなものを見せてくれ
0617nobodyさん2006/02/19(日) 17:03:22ID:???
>>549-551
これとか、見やすいし、普通に使えると思うんだけど。
0618nobodyさん2006/02/19(日) 17:23:41ID:???
>>522
これも悪くないと思うよ
0619nobodyさん2006/02/19(日) 17:26:00ID:???
>>610
役に立つ綺麗なコード
0620nobodyさん2006/02/19(日) 17:27:37ID:???
ツマンネ
0621nobodyさん2006/02/19(日) 17:29:28ID:???
現実問題だ
0622nobodyさん2006/02/19(日) 17:29:36ID:???
flockしてない時点で(ry
0623nobodyさん2006/02/19(日) 20:36:55ID:???
おまえら全員>>1を読め。くだらん議論してくれなんて書いてないだろ
0624nobodyさん2006/02/19(日) 20:42:04ID:???
そうだね
で?
0625nobodyさん2006/02/19(日) 23:06:12ID:???
原因は住人があまりにソースを貼らないからだろ?
0626nobodyさん2006/02/19(日) 23:08:14ID:???
で?
0627nobodyさん2006/02/20(月) 09:25:06ID:???
イチャモンつけるやつはただ荒らしたいだけだろ
何かつくれyp
0628nobodyさん2006/02/20(月) 16:22:52ID:???
>yp
MMO厨はお帰りください
0629nobodyさん2006/02/20(月) 23:18:20ID:???
ちんこがいなくなればこのスレも平和
0630nobodyさん2006/02/23(木) 07:43:17ID:???
俺も糞スクリプト晒すか
0631nobodyさん2006/02/25(土) 10:06:02ID:???
wktk
0632nobodyさん2006/02/26(日) 12:17:54ID:???
hosyu
0633nobodyさん2006/02/26(日) 13:12:17ID:???
少佐、メールでわがまま言ってもいい?
0634nobodyさん2006/02/26(日) 21:38:13ID:???
ドウゾー
0635nobodyさん2006/02/28(火) 12:40:08ID:???
  ☆ チン

        ☆ チン  〃  ∧_∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄
          ヽ ___\(\・∀・)<  ソースまだー?
             \_/⊂ ⊂_)_ \_______
           / ̄ ̄ ̄ ̄ ̄ ̄ ̄/|
        |  ̄  ̄ ̄ ̄ ̄ ̄ ̄:| :|
        |           .|/
0636nobodyさん2006/02/28(火) 13:48:47ID:???
しばらくこのスレは放置する
空気読めない厨房ウザすぎ
0637nobodyさん2006/02/28(火) 20:04:12ID:???
>>636
まあ、春休みだしな。
0638nobodyさん2006/02/28(火) 21:01:15ID:???
>>636-637

キモヤローは二度と来るな
0639nobodyさん2006/03/02(木) 07:22:49ID:???
>>638
(゚д゚)<シメジ
0640ちんこ先生 ◆Qm364jaZpk 2006/03/05(日) 01:26:43ID:Ve31vcRU
じゃ、さらすかな
0641nobodyさん2006/03/05(日) 11:33:31ID:???
640 名前:あぼーん[あぼーん] 投稿日:あぼーん
あぼーん
0642nobodyさん2006/03/05(日) 11:34:05ID:???
>>ちんこ
よっしゃこい
0643nobodyさん2006/03/06(月) 04:08:43ID:???
>>559
携帯がSJISであることを考えた上じゃないのか
06445572006/03/06(月) 05:15:51ID:???
>>557, >>568 を書いた者ですが、
>>568 が間違っていることが判明しました。
& はビット演算子だけでなく、論理値の AND 演算子としても使われるようです。

function hoge(){ 
    return first_process() & second_process() & third_process(); 
} 
で、はじめ2つの関数の返り値に関わらず third_process までちゃんと評価されます。失礼しました。
0645nobodyさん2006/03/06(月) 11:38:58ID:???
確認するくせつけような
06465572006/03/06(月) 18:02:34ID:DiuskzlQ
>>645
仕様を読んだ限りでは & がビット演算子ということしか書かれていなかったので
よくよくテストをせずに早合点してしまった。十分反省している。

ところで、最近停滞ぎみっぽいので燃料を投下してみます。
http://trashtoy.dw.land.to/app/memo/memo.zip

はじめはサイトの更新履歴の公開・管理システムのつもりで作ったけど
イベントの告知や簡易スケジュール帳など、応用範囲は広いと思う。

詳しくは readme.txt を見るべし。
0647nobodyさん2006/03/06(月) 18:49:45ID:???
//2ch互換トリップ生成
function Make_Trip($username) {
//◆を◇に置換
$username = str_replace("◆", "◇", $username);
//$usernameに#が含まれていればトリップ生成
if ( ($pos = strpos($username, '#')) !== false ) {
//usernameの'#'以降を$keyとする
$key = substr($username, ($pos + 1));
//サーバ側文字コードがShift-JISでない場合
if ( ($srvcharset = mb_internal_encoding()) != "Shift-JIS" ) {
//2ch互換トリップにするため「$keyの文字コードを」Shift-JISへ変換
mb_convert_variables("Shift-JIS", $srvcharset, $key);
}
//$keyから$salt生成($saltが2byteに満たないもののために'H.'を足しておく)
$salt = substr($key . "H.", 1, 2);
↓つづく
0648nobodyさん2006/03/06(月) 18:50:37ID:???
//●あほくさエリア突入●
//検索パターン配列(64)生成
$pattern = array();
for( $cnt=0; $cnt<128; $cnt++ ){
//「.」「/」英数字以外を検索パターンとする
if ( ($cnt<46) or ($cnt>57 and $cnt<65) or ($cnt>90 and $cnt<97) or ($cnt>122) ) {
//16進ASCIIコードでの検索パターン文字列を生成
$pattern[] = '/[\\x' . dechex($cnt) . ']/';
}
}
//置換用ベース配列
$replacetmp = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'a', 'b', 'c', 'd', 'e', 'f', '.');
$cnt2 = 0;
//(検索パターンが64通りなのでその数に合わせた配列を用意)
for ($cnt1=0; $cnt1<64; $cnt1++ ) {
$replace[] = $replacetmp[$cnt2];
if ( $cnt2 < 13 ) {
$cnt2++;
} else {
$cnt2 = 0;
}
}
//●あほくさエリア突破●

↓続く
0649nobodyさん2006/03/06(月) 18:51:12ID:???
//$saltに含まれる$patternを、$replace配列内の対応する位置の文字に置換
$salt = preg_replace($pattern, $replace, $salt);
//$saltに含まれる'.','/','0-9','A-Z','a-z'でないものを'.'に置換
$salt = preg_replace('/[^\.\/0-9A-Za-z]/', '.', $salt);
//トリップ生成(生成される文字列は11byte)
$trip = crypt($key, $salt);
//名前部分切り出し(#keyを含まない部分)
$name = substr($username, 0, $pos);
//(名前)+(生成されたトリップの後ろから10byte)を返す
$ret = $name . "◆" . substr($trip,-10);
//#が含まれていない場合
} else {
$ret = $username;
}
//戻り値は「name◆trip」または「name」
return $ret;
}



おわり。無駄が多いです。
0650647-6492006/03/06(月) 18:53:45ID:???
なお、互換確認には

あほにし
えいヴぇっくす

しか使ってないです。
0651nobodyさん2006/03/06(月) 18:54:04ID:???
ごもちゃ箱 http://trashtoy.dw.land.to/ にアクセスしてみましたけど、
どのコンテンツもリンクが見当たらないんですが、、、
06526502006/03/06(月) 19:10:52ID:???
ばかみたいにコメントがいっぱいあるのは、
初心者でもなんとなく処理内容の意味がわかるようにするためです。

もとにした2chトリップ生成ソースは

$salt = substr($key.'H.', 1, 2);
$salt =~ tr/\x3A-\x40\x5B-\x60\x00-\x2D\x7B-\xFF/A-Ga-f./;
$salt =~ s/[^\.\/0-9A-Za-z]/\./g;
$trip = substr(crypt($key, $salt), -10);

の、4行です。
自分はPHP最強房なのでperlよくわかんなかったです。
なので意味の解釈を間違っているかもしれません。
そのへんはperl最強房さんが解説していただけたらとか思ってます。

くだ質で聞こうかとも思ったけど、ここで晒して叩かれたほうが早いと思ったので載せました。
0653nobodyさん2006/03/06(月) 19:28:05ID:???
>>652
コメントの重要性を理解している点は評価できるんですが、
そんなあなたには「粒度」という言葉をプレゼントします。

処理にも、大きい単位から小さい単位までいろいろあるわけで、
すべてのコメントを小さい単位に合わせて書いたら、
ソースコードの見通しが全く見えなくなって、
コメントがないのと同じくらい意味がなくなってしまうのですよ。

あと、コメントの大事なポイントは、
全体の流れの中においてその処理が持っている意味を書くこと。
その処理がどういう動作をしているかは書かなくてもいいです。
そんなことは、PHPの文法が分かる人間だったら誰でも分かるんだから
よっぽど凝っていて複雑なアルゴリズムを書くとき以外には必要ないです。

というわけで、今後はコメントの書き方を要研究すべし。

ソースの中身は面倒なので読まなかったけど、パッと見て思ったのはそんなところ。
0654nobodyさん2006/03/06(月) 19:41:27ID:???
同じく
コメントが無駄すぎるね
0655 ◆gqRrL0OhYE 2006/03/06(月) 19:47:31ID:???
647君のだと、この鳥作れるのかな
0656nobodyさん2006/03/06(月) 19:48:06ID:???
横レスですが>>653
> 全体の流れの中においてその処理が持っている意味を書くこと。
> その処理がどういう動作をしているかは書かなくてもいいです。
意味と動作の具体例みたいなのを教えてください。アホですみません。
0657nobodyさん2006/03/06(月) 20:15:04ID:???
>>656
具体例ねえ。難しいなあ。

とりあえず、参考として、似たようにアルゴリズムが複雑なプログラムのソースコードを
ここでも晒してみるか。Java だけど。ちなみに、以前他の板のスレで晒したものです。

http://trashtoy.dw.land.to/works/PrimeFinder.java

上で偉そうなことを言っておきながら、あまり参考にならないかも。すまん。
0658nobodyさん2006/03/06(月) 20:16:16ID:???
>>656 横だけど。
動作:関数の説明
意味:なぜその関数を利用するか
650の書き方は、スクリプトの解説サイトではよく見るけど、
リファレンス読まなくなって、別の使い方とか知らないままで終わるから諸刃の剣。
06596502006/03/06(月) 20:16:22ID:???
処理に問題がありました。やっぱり自分はよくわかってないみたいです。
perlどころかPHPも良くわかってない。
いま直し&考え中。。

>>653
> そんなことは、PHPの文法が分かる人間だったら誰でも分かるんだから

今までの流れから、このスレには「PHPの文法がわかる人間」が
そんなに多くないと解釈したうえでのコメント文です。(自分を含め)
653さんとは前提が違うようです。
しかし、わかる人間にはうざ過ぎて読むことすらして
もらえないということは良くわかりました。

普段こんなことはやってません。
これは関数なので、書くとしたら

//概要:$usernameに#が含まれていた場合にトリップを付加して返す
//引数:$username(string)
//※:「#」以降8byteまでがトリップ生成に使われる
//戻り値:「名前◆trip」または「名前」(string)
//※:tripは「0-9A-Za-z/.」の64種類中から10文字

とか関数上部に書くくらいです。

汚いもの載せてごめんなさい。
0660nobodyさん2006/03/06(月) 20:23:04ID:???
>>650(*^ー゚)b グッジョブ!!
0661nobodyさん2006/03/06(月) 20:39:08ID:???
なるほどね。
>>659 の言うことも分かった。晒して損したかも(´・ω・`)
>>657 はどう見ても五十歩百歩です。本当にありがとうございました。

ただ、分からない人に対する説明だとしても、やっぱり書き方はあると思う。
例えば書き方の一貫性。「○○を××します」っていう風に、
文として完結させることをすべてのコメントで徹底するだけでもだいぶ違うし。
0662nobodyさん2006/03/06(月) 20:41:02ID:???
あと、個人的なポリシーだけど

// もし○○ならば
if(〜〜〜){
    // ××を行う
    do_something();
}

この書き方ってなんとなく嫌いです。昔は自分もやってたけど。

// もし○○ならば××を行う
if(〜〜〜){
    do_something();
}

このほうが分かりやすいと思う。(コメントの文体に一貫性が出来るのとあいまって)
0663nobodyさん2006/03/06(月) 20:44:57ID:???
何行か連続する処理を説明するときにはその頭
//xxxをxxxしてxxxする
〜
〜
〜
 ←空行

1行だけの説明なら同じ行に
〜//xxxする
0664nobodyさん2006/03/06(月) 20:53:11ID:???
>>663
「妹」を「押し倒」して「xxx」する
を当てはめてしまった。
0665nobodyさん2006/03/07(火) 00:01:38ID:???
てかなんで旧鯖のsalt変換表でうまいこと行くんだ・・・
06666502006/03/07(火) 00:24:55ID:???
>>665
古い情報だけ見てて知らなかった!教えてくれてありがとう!!
新鯖変換ので作り直します。。。
0667nobodyさん2006/03/07(火) 00:26:48ID:???
てか、新鯖のじゃうまく行かないんだが。。。
2chの中ぜんぜん知らないから今どうなってるのかわかんないなぁ
0668nobodyさん2006/03/07(火) 10:00:37ID:???
>>659
関数の説明みたいに複数行にわたるのは
/*
説明
*/
の方が好きです
0669nobodyさん2006/03/07(火) 17:07:05ID:???
コーディングスタイルを語り始めると、宗教論争になっちゃうから
程々にね。
0670nobodyさん2006/03/07(火) 18:12:42ID:???
そろそろGNUスタイル信者とか出てきそうだな
0671 ◆PHP7V5gcl6 2006/03/08(水) 23:16:18ID:???
毎回横道にそれてスレが止まるな。
0672nobodyさん2006/03/09(木) 11:51:48ID:???
な。
0673nobodyさん2006/03/10(金) 08:05:38ID:???
DBに入れたデータをPHPでXMLに変換して、ついでにPHP内でXSLTスタイルシートかませて
XHTML1.1形式で出力する画像掲示板作ってる。xmlにxsltかませる部分のせる。

DBのデータ変換部分は省略。

$xml = なんかXMLな文字列
$xsl = new XSLTProcessor();
$xsl->importStyleSheet( DOMDocument::load("xhtml11.xsl") );
$xhtml = $xsl->transformToXML( DOMDocument::loadXML($xml) );
echo $xhtml;

PHPのマニュアルにのってるやり方真似してるだけですけど。
これだとどんな形式にもできていいですね。

XMLやらXSLTやらXPathやら覚えるの多すぎ。
とりあえず一晩でできたのはここまで。。(実際にはXSLT書いたりするのに一番苦労した)

PHPのDOM拡張モジュールとかXSL関数は便利なのでみなさんつかいませう。
http://jp2.php.net/manual/ja/ref.xsl.php
http://jp.php.net/manual/ja/ref.dom.php

素人がPHPでXML使うことを覚え始めて浮かれてるだけなのであんまり気にしないでください。。
0674nobodyさん2006/03/11(土) 10:18:41ID:???
きにしないよ(*´・з・)(・ε・`*)ネェ-ッ
0675ちんこ先生 ◆Qm364jaZpk 2006/03/12(日) 04:46:59ID:???
http://up.viploader.net/src/viploader36253.zip


ID認証型SSL式決済システム。
すぐ消す。リカーリングつき
0676nobodyさん2006/03/12(日) 05:03:32ID:???
何そのやる気無いアドレス。
0677ちんこ先生 ◆Qm364jaZpk 2006/03/12(日) 05:45:58ID:???
turaretennnayowwwwwwwwwww
0678nobodyさん2006/03/12(日) 07:09:03ID:???
>>676
さっさとNG入れとけ
0679nobodyさん2006/03/12(日) 12:31:24ID:???
>>677
tumanewwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww!!!!!!!!!!!!!!
0680nobodyさん2006/03/12(日) 13:04:58ID:???
VIPのうpろだとか信じられない
0681nobodyさん2006/03/12(日) 17:40:24ID:???
文句言うならうpロダ用意しろよ
0682nobodyさん2006/03/12(日) 19:25:34ID:???
1rK行けばいくらでもうpろだはある
自分の無知を棚に上げるな
0683nobodyさん2006/03/12(日) 20:54:27ID:???
>>682
あほか。お前らが信用できるうpロダを用意しろつってんだよ。
てきとーに選んであげたらまた文句言われるかもしれんだろ?
少しは脳みそ使え池沼。
0684nobodyさん2006/03/12(日) 21:10:27ID:???
>>683
なんか見ていて哀れになってくる
0685nobodyさん2006/03/12(日) 22:12:34ID:???
>>683
かわいそうな奴
0686nobodyさん2006/03/13(月) 00:06:17ID:???
いい加減ち○こ弄りやめて放置しろよ
06876462006/03/13(月) 05:39:57ID:???
どなたか、>>646 を使ってみた方はいませんでしょうか?
今後の改良のためにレビューが欲しいです。
0688nobodyさん2006/03/13(月) 12:00:18ID:???
>>687
今、試してみましたよ。

allow_call_time_pass_referenceが Onじゃないとtime.phpでwarnningが出まくるんですね。

家の環境(4.3.11エントロピ)では、Offに設定してあったので、ちょっとたまげました。
readmeに一言書いてあると良いかも?

0689nobodyさん2006/03/13(月) 14:38:03ID:???
>>687
削除ができなかったよ〜
foreach()のエラーが出てた。
0690nobodyさん2006/03/13(月) 15:44:40ID:???
>>689
家はちゃんと削除できてたようです。
06916462006/03/13(月) 16:11:36ID:???
>>688
ありがとうございます。
こちらの環境でも allow_call_time_pass_reference を OFF にして動作チェックをしてみます。

>>689
よろしければエラーの記述をコピペしていただけると助かります。
0692nobodyさん2006/03/13(月) 16:31:11ID:???
>>691
俺の環境はshort_open_tagがoffなので動かない
タイトルが<?= MEMO_TITLE ?>
06936462006/03/13(月) 17:26:13ID:???
>>692
なるほど。XML宣言を含むXML文書を簡単に出力したい人なんかは、
やっぱり short_open_tag をOFFにしたいですよね。

short_open_tag を OFF にしても動くように修正してみます。
0694nobodyさん2006/03/13(月) 18:05:51ID:???
>>693
期待して待ってる。
06956462006/03/13(月) 19:19:55ID:nDHgXPav
更新しました。
http://trashtoy.dw.land.to/app/memo/memo.zip

>>688 の foreach に関するエラーの件について。
自分の憶測なのですが、Webサーバーが
<input type="checkbox" name="arr[]" value="hoge">
形式のパラメータを解釈できないのかもしれません。
06966882006/03/13(月) 19:33:40ID:???
>>695
ん〜、解釈できますね。
他のとこかな、見てみよう。
0697nobodyさん2006/03/13(月) 19:35:05ID:???
↑
ごめん688じゃなく689でした。
配列がないよってえらーでしたね。たしか。
06986462006/03/13(月) 20:21:38ID:nDHgXPav
>>697
バグが見つかったので更新しました。
http://trashtoy.dw.land.to/app/memo/memo.zip
どうもありがとうございます。

削除する際に、一部のPOSTパラメータが配列ではなくスカラー値だった場合
foreach 内で >>697 のエラーが起こるようになってました。
普通に使っている限りではそのようなことは起こらないと思うので、
>>689の現象はいまだに謎なのですが・・・。
ただ、少なくとも POST パラメータを改ざんすればエラーが発生するのは事実なので
これはれっきとした脆弱性だということで対処しました。
>>689の現象は起こらなくなるはずです。
0699nobodyさん2006/03/13(月) 21:08:11ID:???
>>698
きれいなコードを書かれますね。勉強させていただきます。
07006462006/03/14(火) 02:24:22ID:???
>>699
それは、どうも。
でも、やらないほうがいい悪い癖なんかもたくさんあると思うので、
あまり鵜呑みにしないほうがいいかもです。
ここに晒した時点で、もうこれだけ不具合が発覚しているわけですし。
0701nobodyさん2006/03/14(火) 02:53:07ID:???
>>698
もらた(゚д゚)ウマー
07026462006/03/14(火) 03:32:55ID:???
>>701
自分も、これだけ有益な情報を得られるとは正直思ってなかった。
同じく (゚д゚)ウマー ですよ。
0703nobodyさん2006/03/14(火) 05:25:57ID:???
perlしかわからないけど貰っておくよ!
0704nobodyさん2006/03/15(水) 10:00:07ID:???
>>700
配布サイトよりも解説サイトの方が 646氏は有名になれる希ガス。
そういうのは目指していないのかもしれないけど、コードを見ていて
そう思ったです。
0705nobodyさん2006/03/16(木) 07:38:03ID:???
あんなにコメントだらけじゃ読む気も失せる
0706nobodyさん2006/03/16(木) 07:54:20ID:???
失せていいよ。
読む人は他にいるんだから。
0707nobodyさん2006/03/16(木) 08:26:13ID:???
m9(^Д^)
0708nobodyさん2006/03/16(木) 19:39:42ID:???
>>705
┐(´ー`)┌
0709nobodyさん2006/03/16(木) 19:54:09ID:???
世の中にはプログラムの質よりただ綺麗なコーディングに拘る奇特な方もいらっしゃる
そんなことより先に技術見に付けろと言いたいが
0710nobodyさん2006/03/16(木) 20:32:47ID:???
>>705のような口だけバカはスルー
悔しかったら何か晒してみろバーカwww
■ このスレッドは過去ログ倉庫に格納されています