1 :
nobodyさん :
04/09/11 04:02:39 ID:flbBPOWm Perl、PHPなんでもござれ。 配布スクリプトの中でよくわからん構文などがあったら解読&解説しちゃる。
ここは他人のソースが読めない
>>1 =本7の教えてスレです
3 :
1 :04/09/11 05:10:08 ID:???
>>2 漏れがスレ立てるといっつも本7とか言われるYO!
つまり糞スレしか立ててないということだな。
じゃwemaっていうWIKI派生のスクリプト一式お願いします。
7 :
1 :04/09/12 00:05:31 ID:???
>>5 マリガトー。
>>6 あくまで一部。
数行がどうしてもわからん!ってときに解説します。
>>1 解説してください。
$str =~ s/"/"/g;#"
セミコロンのあとの#"って意味があるんでつか?
答えは漏れも知ってるんでつが、
>>1 さんの実力が知りたいんでつ。
>>1 Wemaの一部ということで。
wema.cgi:289
if id.nil? or id == ''
nfn = "#{dir}/#{Time.now.strftime("%Y%m%d%H%M%S")}#{$$}.txt"
else
nfn = "#{dir}/#{id.sub(/id/,'')}.txt"
end
ここの処理は何やってるんでしょ?
よ-し、お姉さん質問しちゃうよ-- jcode.plの読み方がわかりません。 今はじぇーこーどぴーえると読んでいますが もっとかわいい呼び方を教えてください。
おまいら、あんまり
>>1 をイジメんなよ。
もう出てこれないだろうなw
これでも
>>1 は懲りずに別の教えてスレをまた立てるんだろうな
14 :
nobodyさん :05/02/03 11:22:25 ID:xy56k4eq
意味っつーかコメントアウトしてるじゃん。
色が変になるのを止めてるんだろ
"が1個しかないとエディタによっては色が変になってしまうってコトですね そのため対応する"をコメントにして記入してあると。
18 :
15 :05/02/03 23:20:08 ID:???
漏れの使ってるのではならない。 でも一つ目の"以降が行末まで全部色が変わっちゃうから"をエスケープしてる。
google mapのJavaScriptヨロ
20 :
nobodyさん :2005/12/13(火) 03:38:14 ID:T2HC5b4/
マジレス希望。 グラフ出力のPHPコードらしいのだが、よく分からん。 誰か頭のいい人解説して下さい。 sub graphGet { my($len,$out,$min); my($max,$now,$width,$height,$gif_name,$gif_name2) = @_; if($now){ $len = int($now / $max * $width); if($len > $width){ $max = $width . 'px'; $out = "<img src=\"$GIF_URL/$gif_name\" width=\"$max\" height=\"$height\">"; }elsif($len <= 0){ $aaa = $max; $max = $width . 'px'; $out = "<img src=\"$GIF_URL/$gif_name2\" width=\"$max\" height=\"$height\" alt=\"$aaa / $now\">"; }else{ $max = $len . 'px'; $min = $width - $len;$min = $min . 'px'; $out = "<img src=\"$GIF_URL/$gif_name\" width=\"$max\" height=\"$height\">"; $out .= "<img src=\"$GIF_URL/$gif_name2\" width=\"$min\" height=\"$height\">"; } }else{ $max = $width . 'px'; $out = "<img src=\"$GIF_URL/$gif_name2\" width=\"$max\" height=\"$height\" alt=\"1\">"; } return $out; }
本当にありがとうございました
23 :
nobodyさん :2005/12/13(火) 10:29:49 ID:T2HC5b4/
>>21 え。perlなの?
解説よろしくお願い!
>>23 #grapGetという名前の関数(サブルーチン)を定義
sub graphGet {
#関数内だけで使うmy変数を宣言
my($len,$out,$min);
#引数を変数に代入
my($max,$now,$width,$height,$gif_name,$gif_name2) = @_;
以下略
#$outを戻り値にして終了
return $out;
}
>>20 このスクリプトは恐らく何かの改造版。
一応動いてはいたがある日改造者のもとへ一通のメールが来た。
しかし改造したやつのレベルは低くオリジナルにあった不具合を解決できるはずもなかった。
「いい機会だ。このままサイトを閉鎖しよう」
そう思い立った改造者はユーザーに何の挨拶もなく消えていったのであった。
数年後、ユーザーがネットを検索していると得体の知れないサブルーチンだけが
キャッシュとして残っていることに気づいた。
「まさかこの関数はあのスクリプトのものではないか!」
ユーザーはあの時の思いを熱く語ろうとしている。
そんな関数。
>>20 $max, グラフの最大値
$now, グラフの表示値
$width, グラフ全体の幅
$height, グラフの高さ
$gif_name, 表示値用の画像
$gif_name2 グラフ残りの部分用の画像
$out グラフのhtml
27 :
nobodyさん :2005/12/18(日) 06:28:39 ID:Sn4KdT5Z
>>24 お〜!ありがとうございます。
以下略と言うのが、ナマゴロシ。。
やっぱり、コレくらいのスクリプトだったら、すぐにパパパって分かっちゃうもんですか?
>>25 ん〜、イミフだが 自作だって言ってたような気が。。。
>>26 レスありがとうございます。
ところで、$gif_name2 グラフ残りの部分用の画像
と言うのは何のことですか??背景?
>>27 ┌───────────┬────────┐
│ $gif_name .│ $gif_name2 │
└───────────┴────────┘
29 :
27 :2005/12/20(火) 21:34:54 ID:HQXojDYh
>>28 ありがとう。
$gif_name の部分がグラフで
$gif_name2 は枠内の、グラフじゃない部分の埋め合わせのためにあるんだね!背景として枠を調整するためにある。という解釈でいいのかな?
30 :
nobodyさん :2006/01/03(火) 22:38:47 ID:JH1IlXy/
$page = ($page == int($page) ? $page : int($page + 1)); これの ? と : の意味が良くわかりません・・・。 どなたか教えてくださいm(_ _)m
解決しました
usr/bin/perl sub uri_decode{ my $str = shift; $str =~ tr/+/ /; $str =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack('H2', $1)/eg; return $str; } このpack('H2', $1)の意味がわかりません。教えてください。 検索してみたんですが'H'が意味する「ニブル」ってどういうものですか? '$1'ってところも記述ミスな気がするんですが
34 :
32 :2006/01/04(水) 12:18:10 ID:???
>>33 詳しくありがとうございます。
良く分かりました。
でも、"$1"と言うのはこの場合許されるんでしょうか?
スカラ名の最初の一文字に数字を使用するのは好ましくないですよね?
"$i"のミスタイプかも知れないのですが…
ここらへんお願いします
>34 $1、$2・・・は「スカラー変数」じゃないぞ。 「正規表現に関する特殊変数」だ。
37 :
nobodyさん :2006/01/04(水) 14:03:19 ID:ClLRhAWO
このスクリプトの書き方で、おかしい所を指摘してくれませんか?
#!/usr/bin/perl
require "../lib/jcode.pl";
require "../lib/mimew.pl";
$mailto ='
[email protected] ';
$subject ='タイトルだよ';
$mail = $cgi->('mail');
$name = $cgi->('name');
$kana = $cgi->('kana');
$subject = mimeencode($subject);
open(MAIL, "| /usr/lib/sendmail -t");
print MAIL "To: $mailto\n";
print MAIL "From: $mail\n";
print MAIL "Subject: $subject\n";
print MAIL "Content-Type: text/plain;\n\n";
print MAIL "お名前は= $name\n";
print MAIL "フリガナは= $kana\n";
close(MAIL);
年始早々、このような低レベルの質問で申し訳ありません。
よろしくお願い致します。
>>35-36 助かりましたありがとうございました
今外出中で、携帯なので帰ったらURL見させてもらいます。
40 :
37 :2006/01/04(水) 23:33:56 ID:ClLRhAWO
>>38 なになに?どういうこと?
見たけど何かヒントあったの?
あっちで聞けってことか...orz
教えてくれよ
いや、教えてください。
>37はどこかで配布されてるスクリプトなのかね? そうでないのならスレ違いだ
>37 20世紀のスクリプト
43 :
37 :2006/01/05(木) 02:01:34 ID:+yKIo2wf
44 :
nobodyさん :2006/04/12(水) 17:45:59 ID:AxAuwUbH
46 :
44 :2006/04/13(木) 16:34:10 ID:C+gS5L5K
312 行目以降をお願いします。
47 :
nobodyさん :2006/04/14(金) 01:35:44 ID:AD++CmCG
>>47 スクリプトについているコメント通りとしか言いようがないです。
どこがわからないのか教えてください。
49 :
nobodyさん :2006/04/14(金) 04:40:18 ID:AD++CmCG
じゃあ、とりあえず if(substr($buf, 0, 3) != '+OK') die($buf); $buf = _sendcmd("USER $user"); $buf = _sendcmd("PASS $pass"); $data = _sendcmd("STAT");//STAT -件数とサイズ取得 +OK 8 1234 sscanf($data, '+OK %d %d', $num, $size); を解説してもらえませんか
まず、_sendcmdという関数が下の方にあると思うけど これは、POPサーバーにコマンドを送って結果の一行だけ受け取る関数 で、それを使って USER PASSの各コマンドでユーザー名とパスワードを送って STATで件数とサイズを取得している。 これらはPOPプロトコルのコマンドだから「POP コマンド」あたりでググると意味がわかると思う。
>>49 それの何がわからないというの
文字列$bufの先頭3文字が'+OK'じゃなかったら$bufを表示して終了。
_sendcmd関数に引数"USER $user"を渡して戻り値を$bufに代入。
引数"PASS $pass"で同上。
引数"STAT"で戻り値を$dataに入れる。$dataのフォーマットはコメントに記載
$dataから件数とサイズをそれぞれ$numと$sizeへ代入する。
52 :
44 :2006/04/14(金) 14:03:37 ID:GvAB5r46
お願いします。
Perlで 1 while $MSG =~ s/^(\d+)(\d\d\d)/$1,$2/; の頭の"1"ってどういう意味ですか?
>>52 >質問部分は長いのですが、「それでもよい」という方がいらっしゃいましたら解説お願いします。
そんな暇な人はいらっしゃらないようですね。
wikiのページを見ていたらこんなのがありました。 ↓↓↓ #$fp = fopen( "php://stdin", "r" ); #$response = trim( fgets( $fp ) ); #fclose( $fp ); $response="yes"; これは、どういうことなのでしょうか? php://stdinとは何なのでしょうか?
>if(substr($buf, 0, 3) != '+OK') die($buf); 質問主じゃないけどちょっとしつもーん。 これって、 if (substr($buf, 0, 3) != '+OK') {die($buf);} を省略してるんだよね? 省略した書き方っていろいろあるけど、他にはどんな感じで書けるんでしょ。 die($buf) if substr( $buf, 0, 3) != '+OK'; if (substr($buf, 0, 3) != '+OK') or die($buf); こんな感じでいいのかな。 あと、 !=は数字の比較とかに使うと思ってたんだけど、文字列の比較に使ってもOKなもの?
if (substr($buf, 0, 3) != '+OK') or die($buf); じゃなくて if (substr($buf, 0, 3) == '+OK') or die($buf); かも。
59 :
nobodyさん :2006/04/15(土) 01:45:20 ID:8KHm3P0W
$fp = fsockopen($host, 80, &$errno, &$errstr, $time_out); if(!$fp) { echo "Connect Error! $errstr ($errno)"; }else { fputs($fp,$dat); if($timeout<time()) die("Time out Error!"); while (!feof($fp) && $he != "\r\n"){ $he= fgets($fp, 512); } while(!feof($fp) && time()<$timeout) { $line = fgets($fp,1024); よろ
ブックマークした!わざわざ調べてくれてありがと! 探す単語の目安がわからなくて見つからずに困ってたんだよね。
2chはsubbbs.cgi廃止したけど、なんでbbs.cgiがまともに走ってんの? どう考えてもスレ立てが出来なくなると思うんだけど。 誰か記述分かる人おながいします。
これだけじゃたりないかもしれませんがお願いします。 if ($FORM{mode} eq 'i') { foreach ($startpage..$endpage) { if ($ThreadData[$_] eq '') { next; } my $icnt = $_ + 1; my $rcnt = $_ + 1; $icnt == $pageline ? $icnt = 0 : $icnt = $_ + 1; my ($key,$title,$cnt) = split (/\f/, $ThreadData[$_]); $ithread .= "$rcnt.<a accesskey=\"$icnt\" href=\"./read.cgi?bbs=$bbs&key=$key&ls=10&first=true&mode=i\">$title</a> ($cnt)<br>"; } $next = "<a href=./pageview.cgi?mode=i&bbs=$bbs&page=$nextpn>?次</a>" if $lpnum > $page; } href=\"./read.cgi?bbs=$bbs&key=$key&ls=10&first=true&mode=i\"の部分をいくら変えても反映されないのですが、これは他で制御しているんでしょうか・・?
64 :
63 :2006/04/18(火) 18:44:23 ID:???
事故解決しました
>>62 bbs.cgiにスレ立て機能があるんだろ
66 :
nobodyさん :2006/04/24(月) 05:00:40 ID:66F96BQZ
ここを解説してもらえませんか function convert($str) { if (function_exists('mb_convert_encoding')) { return mb_convert_encoding($str, "SJIS", "JIS,SJIS,UTF-8"); } elseif (function_exists('JcodeConvert')) { return JcodeConvert($str, 0, 2); } return true; } JISをSJISにしているだけなのでしょうか?
>>66 たぶんそう。
mb_stringかJcodeConvertがあるかどうか調べて
いずれかがあったら変換してるみたいだね。
どうもです!
>>65 どうやってもsubbbs.cgiに飛ぶだろ
それとも記述書き換えたとかか?
70 :
nobodyさん :2006/04/28(金) 21:39:59 ID:Na6jyHe3
このスクリプトの説明をお願いします。 function ssl_encrypt($source,$type,$key){ //Assumes 1024 bit key and encrypts in chunks. $maxlength=117; $output=''; while($source){ $input= substr($source,0,$maxlength); $source=substr($source,$maxlength); if($type=='private'){ $ok= openssl_private_encrypt($input,$encrypted,$key); }else{ $ok= openssl_public_encrypt($input,$encrypted,$key); } $output.=$encrypted; } return $output; }
71 :
nobodyさん :2006/04/28(金) 21:41:13 ID:Na6jyHe3
続き function ssl_decrypt($source,$type,$key){ // The raw PHP decryption functions appear to work // on 128 Byte chunks. So this decrypts long text // encrypted with ssl_encrypt(). $maxlength=128; $output=''; while($source){ $input= substr($source,0,$maxlength); $source=substr($source,$maxlength); if($type=='private'){ $ok= openssl_private_decrypt($input,$out,$key); }else{ $ok= openssl_public_decrypt($input,$out,$key); } $output.=$out; } return $output; }
>>70-71 OpenSSLモジュールを使ってそれぞれ暗号化(encrypt)と復号化(decrypt)をしている関数に見える。
128バイトごとに分割しながら処理してるね。
OpenSSL関数やOpenSSLそのものについてはマニュアルやgoogle参照ということで。
73 :
nobodyさん :2006/05/30(火) 08:54:13 ID:D128RUeT
このスクリプトの解説をお願いします @log_lines=(); if(!$EST{html}){%Clog=();} local(@temp_lines,%temp_ref,$line,@kt,$kt,@Slog,$st_no,$end_no,$i=0,$j=0); $end_no=$EST{hyouji}*$LC_page -1; $st_no=$end_no - $EST{hyouji} +1; if(!$EST{html}){ open(IN,"$EST{log_path}$Spre_kt_file.cgi"); while($line=<IN>){ @Slog=split(/<>/,$line); @kt=split(/&/,$Slog[10]); foreach $kt(@kt){ if($LC_kt eq $kt){ $temp_ref{$Slog[0]}=$i; push(@temp_lines,$line); $i++; } $Clog{$kt}++; } } close(IN); 続く↓↓
74 :
nobodyさん :2006/05/30(火) 08:56:35 ID:D128RUeT
続き foreach $line(sort{$b <=> $a}(keys %temp_ref)){ if($st_no<=$j && $j<=$end_no){ push(@log_lines,$temp_lines[$temp_ref{$line}]); } $j++; } undef(@temp_lines); undef(%temp_ref); } よろしくお願いします
>>73-74 これは何のスクリプト?
ログの中からなんらかの条件($LC_kt)に合ったものを読み込んで
ログの一番最初のパラメータ(たぶん書き込みID?)でソートして、
指定されたページのところから
表示数文取り出して@log_linesに入れて返しているように見える。
けど、ログの形式もわかんないし、
いくつか使われてるグローバル変数の意味もわかんないし
なんともいえない。
実際のログファイルを見ながらなら
読めるんじゃないかな。
76 :
nobodyさん :2006/06/22(木) 03:53:34 ID:4vrB1Nlw
if(phpversion()>="4.1.0"){//PHP4.1.0以降対応 $_GET = array_map("_clean", $_GET); $_POST = array_map("_clean", $_POST);//11/8修正 extract($_GET); extract($_POST); extract($_COOKIE); extract($_SERVER); $upfile_type=_clean($_FILES['upfile']['type']); $upfile_size=$_FILES["upfile"]["size"]; $upfile_name=_clean($_FILES["upfile"]["name"]); $upfile=$_FILES["upfile"]["tmp_name"]; } を説明していただけませんか?
>>76 register_globals onを前提に作ったスクリプトをoffにも対応させるためのもの
と思われる
78 :
nobodyさん :2006/06/22(木) 08:13:20 ID:4vrB1Nlw
実際にはどうしているのでしょうか? 教えて頂ければ大変嬉しいです!
83 :
nobodyさん :2006/06/29(木) 22:48:30 ID:JkUV3tHw
Perlで $ref->{q_line} = param("line") ne "" ? param("line") : $ref->{line}; というスクリプトの ? や、 : の使い方が分かりません。 何で検索していいのかも分かりません・・・orz
>83 「条件演算子」で検索しる
トンクス 真ん中が条件とは・・・
>>83 そのサンプルに限ると3項演算子よりも
$ref->{q_line} = param("line") || $ref->{line};
がシンプル。
88 :
電脳プリオン :2011/11/05(土) 19:27:57.25 ID:??? BE:121623034-2BP(1960)
89 :
nobodyさん :
2013/06/15(土) 21:32:22.92 ID:jrOK9IM3 神スレ