配布スクリプトの読めない部分を解説しちゃる
■ このスレッドは過去ログ倉庫に格納されています
Perl、PHPなんでもござれ。 配布スクリプトの中でよくわからん構文などがあったら解読&解説しちゃる。 $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\"の部分をいくら変えても反映されないのですが、これは他で制御しているんでしょうか・・? >>62 bbs.cgiにスレ立て機能があるんだろ ここを解説してもらえませんか 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に飛ぶだろ それとも記述書き換えたとかか? このスクリプトの説明をお願いします。 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; } 続き 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参照ということで。 このスクリプトの解説をお願いします @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); 続く↓↓ 続き 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に入れて返しているように見える。 けど、ログの形式もわかんないし、 いくつか使われてるグローバル変数の意味もわかんないし なんともいえない。 実際のログファイルを見ながらなら 読めるんじゃないかな。 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にも対応させるためのもの と思われる 実際にはどうしているのでしょうか? 教えて頂ければ大変嬉しいです! $_POST と $_GET で渡ってきた値を _clean() という独自関数で 恐らくサニタイズしているようだね。 例えば $_POST['foo'] を $foo と使えるようにしている。 ttp://coronado.s8.xrea.com/php/function.extract.php ttp://coronado.s8.xrea.com/php/function.array-map.php $_COOKIE や $_SERVER はサニタイズしていないから危険だね。 あと、アップロードしたファイルも $upfile を そのまま使っていそうだけど ttp://coronado.s8.xrea.com/php/function.is-uploaded-file.php ttp://coronado.s8.xrea.com/php/function.move-uploaded-file.php ttp://coronado.s8.xrea.com/php/features.file-upload.php でチェックすべき。 >>76 バージョンを比較するなら version_compare() ttp://coronado.s8.xrea.com/php/function.version-compare.php の方が相応しいね。 Perlで $ref->{q_line} = param("line") ne "" ? param("line") : $ref->{line}; というスクリプトの ? や、 : の使い方が分かりません。 何で検索していいのかも分かりません・・・orz >>83 そのサンプルに限ると3項演算子よりも $ref->{q_line} = param("line") || $ref->{line}; がシンプル。 誰でも簡単にネットで稼げる方法など 参考までに、 ⇒ 『半藤のブブイウイウレレ』 というサイトで見ることができます。 グーグル検索⇒『半藤のブブイウイウレレ』 PT41NYCCZ6 プログラミングを誰でも習得できる方法は、「前場アキドルのプログラミングマスター方法」というブログで見られるらしいよ。ネットで調べると見られるらしいです。 TM13D ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.4 2024/05/19 Walang Kapalit ★ | Donguri System Team 5ちゃんねる