七行プログラミング (452レス)
七行プログラミング http://medaka.5ch.net/test/read.cgi/php/1036141603/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
257: 7Hoo [sage] 04/02/24 22:23 ID:??? use CGI":all";charset$c="EUC-JP";($p=path_info||Home)=~s!^/+|/+$!!g;chdir("./". $p)||die;$F='.7hoo';if(@p=map{param$_}U,T,D){s/\s/ /g for@p;open F,">>$F";eval{ flock F,2};$"="\t";print F"@p\n"}put header,start_html(-encoding=>$c,lang,ja, Title,"7Hoo"),p(join" / ",map{a{href,url.($i.="/$_")},$_}split"/",$p),hr,ul(li[ map{a{href,url."/$p/$_"},$_}grep-d,<*>]),open(F)&&hr.dl(map{@N=split/\t/;dt(a{ href,$N[0]},b$N[1]),dd$N[2]}<F>),hr,startform(0,url."/
$p"),p((map{textfield( /(.)/,$_,40),br}Url,Title),textarea(D,"",3,40,1),br,submit,),endform,end_html ・l10n 。 ・Home ディレクトリをスクリプトと同階層に用意。 ・カテゴリの table をやめて ul 一つに。 ・リンクリストを dl に。 ・登録フォームを常に表示。 http://medaka.5ch.net/test/read.cgi/php/1036141603/257
258: Store7.pm [] 04/02/27 22:01 ID:xssKWf0b package Store7;sub E{$_=shift;s/\\/\\\\/g;s/'/\\'/g;$_}@ISA='Exporter';@EXPORT= @EXPORT_OK=qw/store retrieve/;sub store{open my$o,">$_[1]";print$o ''.d($_[0]); }sub retrieve{do$_[0]}sub d{my$f=shift;my$e=ref$f;$e eq'SCALAR'?"'".E($$f)."'": $e eq'ARRAY'?'['.join(',',map{d($_)}@$f).']':$e eq'HASH'?'{'.join(',',map{my$k= $_;$_="'".E($k)."'=>".d($f->{$k})}keys%$f).'}':"'".E($f)."'"};use Exporter;1 なんとか5行でStorable.pmと同じ使い方です(storeとretrieve
だけ)。 store( \%hashとか\@array, 'data.txt' ); $hash_ref = retrieve('data.txt'); http://medaka.5ch.net/test/read.cgi/php/1036141603/258
259: nobodyさん [] 04/02/27 23:21 ID:aqbVKltF 無造作に縮めてみる。 package Store7;@ISA=Exporter;@EXPORT=@EXPORT_OK=qw/store retrieve/;use Exporter ;sub E{$_=pop;s/(\\|')/\\$1/g;$_}sub d{my$e=ref(my$f=pop);$e eq 'SCALAR'?"'".E$ $f."'":$e eq 'ARRAY'?'['.join(',',map{d$_}@$f).']':$e eq 'HASH'?'{'.join(',', map{"'".E($_)."'=>".d($f->{$_})}keys%$f).'}':"'".E($f)."'"}sub store{open my$o, ">$_[1]";print$o d($_[0])}sub retrieve{do$_[0]} http://medaka.5ch.net/test/read.cgi/php/1036141603/259
260: 258 [] 04/02/28 13:00 ID:GPwfHIuc >>259 \->\\したあと、'->\'しなければいけないので、s/(\\|')/\\$1/g;はマズイっぽいです。 http://medaka.5ch.net/test/read.cgi/php/1036141603/260
261: nobodyさん [sage] 04/02/29 22:04 ID:??? package Store7;use base Exporter;@EXPORT=qw/store retrieve/;sub retrieve{do$_[0 ]}sub E{$_=pop;s/\\/\\\\/g;s/'/\\'/g;"'$_'"}sub d{my$e=ref(my$f=pop);"SCALAR"eq $e?E$$f:"ARRAY"eq$e?"[".join(',',map{d($_)}@$f)."]":"HASH"eq$e?"{".join(',',map {E($_),d($f->{$_})}keys%$f)."}":E$f}local*F;sub store{open F,">".pop;print F d pop;close F}1 ・明示的に close しないとバッファに溜まったデータが print されない為、 store 直後に retrieve できない。 ・Perl 5.005_03 では
do pop が出来なかったので、do $_[0] のままに。 http://medaka.5ch.net/test/read.cgi/php/1036141603/261
262: nobodyさん [sage] 04/02/29 23:12 ID:??? 改行しなければいいんでねーの? http://medaka.5ch.net/test/read.cgi/php/1036141603/262
263: nobodyさん [sage] 04/03/01 02:53 ID:??? >>262 >>1 一応こういうルールでやってます。 横79文字ってのは80文字-改行1文字ね。 http://medaka.5ch.net/test/read.cgi/php/1036141603/263
264: nobodyさん [sage] 04/03/03 04:38 ID:??? 新しいお題目なんだけど 七行ハーボット ってどう? 最低限、カウンタ・人工無能・ミニゲームつきって事で。 http://medaka.5ch.net/test/read.cgi/php/1036141603/264
265: nobodyさん [sage] 04/03/03 14:35 ID:??? >>264 ?でしょ http://medaka.5ch.net/test/read.cgi/php/1036141603/265
266: nobody [] 04/03/04 17:41 ID:yJd59Upc accesslog.cgi - 7行アクセス解析。 SSIで埋め込むことで記録。例:<!--#exec cgi="accesslog.cgi"--> データを見るときは http://○○/accesslog.cgi?20040304&MSIE 6 みたいにパラメータ’日付 & 検索文字列(省略可))を渡して呼び出します。 正直perl歴はまだ半年で、テクニック的なものは使えないのでこの程度です。 #! /usr/bin/perl sub z{local(*z)=$_[0];$z=~s/^(\d)$/0$1/;}print"Content-Type:text/plain\n\n";%e= %ENV;$q=$e{'QUERY_STRING'};($s,$n,$h,$d,$m,$y)=localtime;$y+=190
0;$m++;z(*m);z( *d);z(*h);z(*n);z(*s);if(!$q){open(F,">>$y$m$d.txt");print F "$h$n$s<>$e{'REMOTE_ADDR'}<>$e{'HTTP_USER_AGENT'}<>$e{'HTTP_REFERER'}\n";}else{ ($p,$k)=split(/&/,$q);open(F,"$p.txt");while(<F>){$c++;if($_=~/$k/){print;$t++; }}print"\n全$c件/ヒット$t件\n";}close(F); http://medaka.5ch.net/test/read.cgi/php/1036141603/266
267: nobodyさん [sage] 04/03/04 21:42 ID:??? >>266 初級者お断りとは言わないし、むしろどんどんコードを書き込んでほしい けれど、http://cm.xrea.cc/techinfo.cgi は一通り読んでほしいな。 ハッシュキーのクォート、ブロック末のセミコロン、関数の括弧、暗黙の 代入が行われる変数 etc etc... 文法的に省略可能な部分が沢山残って いるのはちょっとねぇ。 print"Content-Type: text/plain\n\n";if(($_,$k)=split/&/,$ENV{QUERY_STRING}){/^ \d{8}$/x&&open F,"$_.txt";($k?/\Q$k/:1)&&($t++,print)while<F>;print"\n全$.件/". "
ヒット$t件"}else{s/^\d$/0$&/for($s,$n,$h,$d,$m,$y)=localtime;$y+=1900;$m++;$m =~s/^\d$/0$&/;open F,">>$y$m$d.txt";print F join('<>',"$h$n$s",@ENV{REMOTE_ADDR ,HTTP_USER_AGENT,HTTP_REFERER}),"\n"} Perl の習熟度に自信がないなら、自力で何とか10行、ぐらいのサイズ から載せてくれたら、スレの住人がよってたかって縮めるんじゃないかな。 http://medaka.5ch.net/test/read.cgi/php/1036141603/267
268: 266 [] 04/03/05 18:15 ID:EBEJkXEP しっかりと読みました。 >>267さんが短くしてくれたおかげで、妥協した機能がつけれました。 日付の範囲指定を可能にして、データをtab区切りで記録して ファイルを表示するのではなくCSV(TSV)としてDLするようにしてみました。 #! /usr/bin/perl print"Content-Disposition: attachment;filename=log.csv;\nContent-Type: text/t". "ab-separated-values\n\n";if(($f,$t,$k)=split/&/,$ENV{QUERY_STRING}){for($f...$ t){/^\d{8}$/x&&open F,"$_.txt";($k?/\Q$k/:1)&&(print)while<F>}}else{s
/^\d$/0$&/ for($s,$n,$h,$d,$m,$y)=localtime;$y+=1900;$m++;$m=~s/^\d$/0$&/;open F,">>$y$m". "$d.txt";print F join("\t",$h,$n,$s,@ENV{REMOTE_ADDR,HTTP_USER_AGENT, HTTP_REFERER}),"\n"} >>267さんのにただ付け足した感じです。 それでも、たった一日でものすごい勉強になりました。 http://medaka.5ch.net/test/read.cgi/php/1036141603/268
269: nobodyさん [sage] 04/03/06 00:53 ID:??? >>261 オベンキョになります。 http://medaka.5ch.net/test/read.cgi/php/1036141603/269
270: nobodyさん [sage] 04/03/12 09:33 ID:??? 息抜きにテキストカウンタ。お題がお題なので、今日/昨日/総計のカウントと、 ランダムワード表示機能付けてまだ一行余ってるけど。 --- 7rwcntr.cgi --- #!/usr/bin/perl sub P{seek local*F=pop,0,0;print F@_}sub o{open(local*F,"+<@_")||die;eval{flock F,2};*F}sub j{(localtime((stat pop)[9]))[3]}$l=@l=<$_>,chomp($r.=$l[rand$l])for map{o$_}sort<?.dat>;$A=o"all.dat";$a=<$A>+1;j($T=o"tday.dat")==j($Y=o"yday.dat" )?do{P$t=<$T>+1,$T;$y=<$Y>}:do{P
$y=<$T>,$Y;P$t=1,$T};P$a,$A;$s=@ARGV?javascript :plain;printf"Content-Type: text/$s\n\n".join('',<DATA>),$r,$a,$t,$y __END__ 空ファイル all.dat, tday.dat, yday.dat を予め用意。 ?.dat というファイルがあると、そのファイルから一行ランダムに選んで表示。 ?.dat が複数あった場合は、各ファイルからランダムに取り出して繋げて表示。 例えば 0.dat に人名、1.dat に場所、2.dat に行動のリストをそれぞれ用意 しておけば、「誰々が何処で何々」のようなランダム文を表示します。 http://medaka.5ch.net/test/read.cgi/php
/1036141603/270
271: nobodyさん [sage] 04/03/12 09:36 ID:??? ● SSI での使用 __END__ トークン以下に %s<br />all:%06d today:%03d yesterday:%03d HTML ファイルの body 要素内に <!--#include virtual="/cgi-bin/7rwcntr.cgi"--> ● JavaScript 経由で CGI プログラムとして使用 __END__ トークン以下に function writeCount() { document.write("%s<br />all:%06d today:%03d yesterday:%03d"); } HTML ファイルの header 要素内に <script src="/cgi-bin/7rwcntr.cgi?1" type="text/javascript"></script> body 要
素内に <script type="text/javascript"><!-- writeCount(); //--> </script> http://medaka.5ch.net/test/read.cgi/php/1036141603/271
272: 7rwcntr [sage] 04/03/12 11:11 ID:??? 日付切替部分修正。 sub P{seek local*F=pop,0,0;print F@_}sub o{open(local*F,"+<@_")||die;eval{flock F,2};*F}$l=@l=<$_>,chomp($r.=$l[rand$l])for map{o$_}sort<?.dat>;$T=o"tday.dat"; $Y=o"yday.dat";$A=o"all.dat";$a=<$A>+1;(localtime)[3]-(localtime((stat$Y)[9]))[ 3]?do{P$y=<$T>,$Y;P$t=1,$T}:do{P$t=<$T>+1,$T;$y=<$Y>};P$a,$A;$s=@ARGV? javascript:plain;printf"Content-Type: text/$s\n\n".join('',<DATA>),$r,$a,$t,$y http://medaka
.5ch.net/test/read.cgi/php/1036141603/272
273: 7rwcntr [sage] 04/03/14 02:10 ID:??? sub o{open(F,"+<@_")?eval{flock F,2}:die;<F>}($a,$t,$y,$l)=split/\t/,o"cnt.dat" ;dbmopen%r,remote,420or die;if(time-$r{$r="@ENV{REMOTE_ADDR,HTTP_USER_AGENT}"}> 3600&&$r ne$l){$y=$t,$t=0if(localtime)[3]-(localtime((stat F)[9]))[3];seek F,0, 0;print F join"\t",++$a,++$t,$y,$r;eval{truncate F,tell F}}$r{$r}=time;chomp($w .=$l[rand(@l=o$_)])for sort<?.dat>;$/=@ARGV?javascript:plain;printf "Content-Type: text/$/\n\n".<DATA>,$w,$a,$t,$y ・カウン
タファイル三つを cnt.dat 一つに統合。 ・重複カウント防止。(一時間以内と直前) http://medaka.5ch.net/test/read.cgi/php/1036141603/273
274: 7wiki [sage] 04/03/14 15:28 ID:??? use CGI":all";charset$c="EUC-JP";$w='\b(([A-Z][a-z]+){2,})';$f=script_name;$/=( );($p)=path_info=~/$w/;$p||=FrontPage;request_method=~PO&!($m=param z)&&unlink$ p;open F,$m?">$p":$p;eval{flock F,2};print F$m||=<F>;$_=pre(escapeHTML$m).hr.ul map{li"".localtime((stat)[9]),$_}sort{-M$a<=>-M$b}grep/^$w$/&-f,<*>;s|$w|(!-f$1 &&$1).a{href,"$f/$1"},-f _?$1:"?"|eg;put header,start_html(-title=>$p,encoding, $c,lang,ja),h1($p),startform(0,"$f/$p"),p(texta
rea(z,$m,6,60),br,submit), endform,hr,$_,end_html ・「〜/7wiki.cgi/」に対応。 http://medaka.5ch.net/test/read.cgi/php/1036141603/274
275: 7uploader [sage] 04/03/14 15:30 ID:??? use CGI":all";$CGI::POST_MAX=1024000;$/=\4096;chdir D;sub v{open(F,pop)?binmode F:die}if($f=upload f){$f=~/\.\w+$/;v">".time.$&;print F$_ while<$f>;close F}++$ i<51?push@f,$_:unlink for sort{$b<=>$a}<*>;($_=param d)?(v($_),put header(-type =>'application/octet-stream',Content_length,-s,attachment,$_),<F>):put(header, start_html,start_multipart_form,filefield(f),submit,endform,table({border,1},Tr [th([Name,Date,Size]),map{td[a({hre
f,"?d=$_"},$_),''.localtime((stat)[9]),-s]} @f]),end_html) ・縮め。 http://medaka.5ch.net/test/read.cgi/php/1036141603/275
276: 7Hoo [sage] 04/03/14 15:31 ID:??? use CGI":all";charset$c="EUC-JP";($p=path_info||Home)=~s!^/+|/+$!!g;chdir"./$p" ||die;$F='.7hoo';s/\s/ /g for@p=map{param$_}U,T,D;open(F,">>$F"),eval{flock F,2 },$"="\t",print F"@p\n"if@p;sub A{a{href,url.pop},$_}sub e{escapeHTML@N[@_]}put header,start_html(-title=>"7Hoo",encoding,$c,lang,ja),p(join" / ",map{A$i.="/". $_}split"/",$p),ul(li[map{A"/$p/$_"}grep-d,<*>]),open(F)&&hr.dl(map{@N=split/\t /x;dt(a{href,$N[0]},b e 1),dd e 2}<F>),hr,startform
(0,url."/$p"),p(join br,(map {textfield/(.)/,$_,40}Url,Title),textarea(D,"",3,40,1),submit),endform,end_html ・XSS 脆弱性の fix http://medaka.5ch.net/test/read.cgi/php/1036141603/276
277: SevenLines の中の人 [sage] 04/03/14 15:52 ID:??? >>274-276 の三つ、問題無いようでしたらサイトに載せます。 7uploader と 7Hoo は仕様や出力を随分いぢってしまったので、 軌道修正もお願いします。(w >原作者殿 作業用のアップローダ用意しましたので、ファイルの受け渡しに ご利用下さい。 http://cm.xrea.cc/upload.cgi TODO: 7rwcntr > telnetd > Unit7 > Store7 > 7vote telnetd と accesslog.cgi は 202 さんと 266 さんに掲載許可を 頂け次第サイトに載せようと思ってますので、適用ライセンス等 ご連絡下され
ば幸いです。 http://medaka.5ch.net/test/read.cgi/php/1036141603/277
278: 266 [] 04/03/15 14:12 ID:jJ3gsLA0 #! /usr/bin/perl sub r{$r=$_[0]?"tab-separated-values\nContent-Disposition: attachment;filenam". "e=log.csv":"plain";print"Content-Type: text/$r\n\n"}if(($a,$f,$t,$k)=split/&/, $ENV{QUERY_STRING}){r $a;for($f...$t){/^\d{8}$/x&&open F,"$_.txt";($k?/\Q$k/:1) &&(print)while<F>}}else{r;s/^\d$/0$&/for($s,$n,$h,$d,$m,$y)=localtime;$y+=1900; $m++;$m=~s/^\d$/0$&/;open F,">>$y$m$d.txt";print F join("\t",$h,$n,$s,@ENV{ REQUEST_URI,REMOTE_ADDR,HTTP_USER_AGENT,HTTP_RE
FERER}),"\n"} >>266です。 >>268はアクセスログ記録モードで呼び出したときもCSVのダウンロードダイアログが出る という致命的なバグがありました。すみません。 バグ修正と、さらにパラメータで画面に表示/ダウンロードを選択できるようにしました。 また、REQUEST_URIも記録するようにしたので、サイト全体の解析にも使えるようになったと思います。 スクリプト名は他にあわせて、7accesslog.cgi と変更しようと思います。 こんなので掲載していただけるのであれば是非お願いします。 このスレのおかげで完成したと思っているので、
私としては権利等の主張をする つもりはありませんのでGPLあたりの他のスクリプト同様のライセンスにしてください。 ■使用法 ・記録時はSSI等で呼び出します。>>271さんみたいにJavaScriptでも呼び出せそうな気はします。 ・表示およびダウンロード時はパラメータをつけて普通に呼び出します。 パラメータなし アクセスログを記録。 日付.txt に 時,分,秒,REQUEST_URI,REMOTE_ADDR,HTTP_USER_AGENT,HTTP_REFERER を記録します。 パラメータあり アクセスログを表示/ダウンロード 第1パラメータ ・・・ 0:表示 1:ダウンロード
第2パラメータ ・・・ ログの取得開始日(yyyymmdd) 第3パラメータ ・・・ ログの取得終了日(yyyymmdd) 第4パラメータ ・・・ ログ取得時の絞込みキーワード(省略すると全件取得) (例) http://hoge.com/7accesslog.cgi?1&20040301&20040331&MSIE この例では、2004年3月1日〜2004年3月31日までの「MSIE」を含むログがダウンロードされます。 http://medaka.5ch.net/test/read.cgi/php/1036141603/278
279: 7accesslog [sage] 04/03/16 15:40 ID:??? ($a,$f,$t,$k)=@ARGV;print"Content-Type: text/",!$a?plain:"tab-separated-values Content-Disposition: attachment;filename=log.csv","\n\n";$k=~s/%([\da-f]{2})/ pack"H2",$1/egi;$f?do{/^\d{8}$/&&(open(F,"$_.txt"),print grep$k?/\Q$k/o:1,<F>) for$f..$t||$f}:do{s/^\d$/0$&/for($s,$n,$h,$d,$m,$y)=localtime;$y+=1900;$m++;$m =~s/^\d$/0$&/;open F,">>$y$m$d.txt";print F join("\t",$h,$n,$s, @ENV{REQUEST_URI,REMOTE_ADDR,HTTP_USER_AGENT,HTTP_REFERER}),"\n"} ・検索ワ
ードを URI-unescape ・第 3 引数を省略可能に ・パラメータをクエリ渡しから引数渡しへ (例) http://hoge.com/7accesslog.cgi?1+20040301+20040331+MSIE%205 http://hoge.com/7accesslog.cgi?1+20040301 http://medaka.5ch.net/test/read.cgi/php/1036141603/279
280: 266 [sage] 04/03/16 18:36 ID:??? >7accesslog for で $f..$t ってやると、月や年をまたいだ時、 無駄なファイルオープン(できないやつ)が多発するので そこをなんとかしたいです・・・。 ヘタレな私にはいい方法が思いつきませんが。 http://medaka.5ch.net/test/read.cgi/php/1036141603/280
281: nobodyさん [sage] 04/03/16 22:51 ID:??? >>280 ・効率的な生成アルゴリズムを Web や本から探す。 ・思いつくまま色々書いて試す。 ・文字数を食っている機能を捨てる。 ・緩めのルール (shebang 無し 7 行 & モジュール可) で挑戦する。 とにかく足掻いて形にするのが大事。 http://medaka.5ch.net/test/read.cgi/php/1036141603/281
282: nobodyさん [sage] 04/03/16 23:11 ID:??? >>277 202です。 ライセンスとかようわからないですが、telnetdとStore7はほかのと同じようにして置いていただければ結構です。 http://medaka.5ch.net/test/read.cgi/php/1036141603/282
283: 266 [sage] 04/03/17 10:18 ID:??? ($a,$f,$t,$k)=@ARGV;$k=~s/%([\da-f]{2})/pack"H2",$1/egi;$l=$f.($t?"-$t":"").($k ?"-$k":"");print"Content-Type: text/",$a?"tab-separated-values\nContent-Dispo". "sition: attachment;filename=log$l.csv":plain,"\n\n";$f?do{/^\d{4}(\d\d)(\d\d)$ /x&&$1*$2&&$1<13&&$2<32&&(open(F,"$_.txt"),print grep$k?/\Q$k/o:1,<F>)for$f..$t ||$f}:do{s/^\d$/0$&/for($s,$n,$h,$d,$m,$y)=localtime;$y+=1900;$m++;$m=~s/^\d$/0 $&/x;open F,">>$y$m$d.txt";print F join("\t",$y,$m,$d,$
h,$n,$s,@ENV{REQUEST_URI ,REMOTE_ADDR,HTTP_USER_AGENT,HTTP_REFERER}),"\n"} ■記録時 ・ログファイルに日付も記録するよう変更。 (日付範囲を指定してログ表示した際に日付が無いとわけわからないため) ■閲覧時 ・ダウンロード時のファイル名に抽出条件を盛り込むよう変更。 ・1〜12月の1〜31日の間だけファイルオープンを試みるよう変更。 いろいろ増やしたらshebang無し七行になっちゃいました。 http://medaka.5ch.net/test/read.cgi/php/1036141603/283
284: nobodyさん [sage] 04/03/17 11:13 ID:??? トイレに行かせただけで動作未確認。 ($k=$ARGV[3])=~s/%([\da-f]{2})/pack"H2",$1/egi;/\D/&&die for($a,$f,$t)=@ARGV; print"Content-Type: text/",$a?"tab-separated-values\nContent-Disposition: atta" ."achment;filename=log$f".($t&&"-$t").($k&&"-$k").'.csv':plain,"\n\n";$f?do{/^. ...(..)(..)$/x&&$1*$2&&$1<13&&$2<32&&(open(F,"$_.txt"),print grep$k?/\Q$k/o:1, <F>)for$f..$t||$f}:do{($d,$m,$y)=(localtime)[3,4,5];open F,sprintf">>%d%02d%02" ."d.txt",$y+190
0,$m+1,$d;print F join("\t",''.localtime,@ENV{REQUEST_URI, REMOTE_ADDR,HTTP_USER_AGENT,HTTP_REFERER}),"\n"} ログの日付を scalar localtime に変更。 http://medaka.5ch.net/test/read.cgi/php/1036141603/284
285: nobodyさん [sage] 04/03/17 14:13 ID:??? ($a,$f,$t,$k)=@ARGV;$k=~s/%([\da-f]{2})/pack"H2",$1/egi;print"Content-Type: ". "text/",$a?"tab-separated-values\nContent-Disposition: attachment;filename=l". "og$f".($t&&"-$t").($k&&"-$k").'.csv':plain,"\n\n";$f?do{/^....(..)(..)$/&&$1* $2&&$1<13&&$2<32&&(open(F,"$_.txt"),print grep$k?/\Q$k/o:1,<F>)for$f..$t||$f}: do{($d,$m,$y)=(localtime)[3,4,5];open F,sprintf">>%d%02d%02d.txt",$y+1900,$m+1 ,$d;print F join("\t",''.localtime,@ENV{REQUEST_URI,R
EMOTE_ADDR, HTTP_USER_AGENT,HTTP_REFERER}),"\n"} >>284 1行目ってなんで変えたの?>>283の1行目で動くようなので戻すことで若干縮め。 あとattachmentのつづり直した。もう少しでshebang含7行。 http://medaka.5ch.net/test/read.cgi/php/1036141603/285
286: nobodyさん [sage] 04/03/17 15:03 ID:??? >>285 コードそのまま。$a, $f, $t に数字以外の文字が 含まれない事を保障する為。 まぁここはチェック飛ばしても穴にはならんかな。 http://medaka.5ch.net/test/read.cgi/php/1036141603/286
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 166 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.022s