配布スクリプトの読めない部分を解説しちゃるat PHP
配布スクリプトの読めない部分を解説しちゃる - 暇つぶし2ch73:nobodyさん
06/04/29 23:26:03 .net
>>70-71
OpenSSLモジュールを使ってそれぞれ暗号化(encrypt)と復号化(decrypt)をしている関数に見える。
128バイトごとに分割しながら処理してるね。

OpenSSL関数やOpenSSLそのものについてはマニュアルやgoogle参照ということで。

74:nobodyさん
06/05/30 08:54:13 D128RUeT.net
このスクリプトの解説をお願いします

@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);
続く↓↓

75:nobodyさん
06/05/30 08:56:35 D128RUeT.net
続き

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);
}
よろしくお願いします

76:nobodyさん
06/05/30 16:45:44 .net
>>73-74
これは何のスクリプト?
ログの中からなんらかの条件($LC_kt)に合ったものを読み込んで
ログの一番最初のパラメータ(たぶん書き込みID?)でソートして、
指定されたページのところから
表示数文取り出して@log_linesに入れて返しているように見える。

けど、ログの形式もわかんないし、
いくつか使われてるグローバル変数の意味もわかんないし
なんともいえない。

実際のログファイルを見ながらなら
読めるんじゃないかな。

77:nobodyさん
06/06/22 03:53:34 4vrB1Nlw.net
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"];
}
を説明していただけませんか?

78:nobodyさん
06/06/22 07:47:36 .net
>>76
register_globals onを前提に作ったスクリプトをoffにも対応させるためのもの
と思われる

79:nobodyさん
06/06/22 08:13:20 4vrB1Nlw.net
実際にはどうしているのでしょうか?
教えて頂ければ大変嬉しいです!

80:nobodyさん
06/06/24 09:00:44 .net
$_POST と $_GET で渡ってきた値を _clean() という独自関数で
恐らくサニタイズしているようだね。

例えば $_POST['foo'] を $foo と使えるようにしている。

URLリンク(coronado.s8.xrea.com)
URLリンク(coronado.s8.xrea.com)

$_COOKIE や $_SERVER はサニタイズしていないから危険だね。

81:nobodyさん
06/06/24 09:02:27 .net
あと、アップロードしたファイルも $upfile を
そのまま使っていそうだけど

URLリンク(coronado.s8.xrea.com)
URLリンク(coronado.s8.xrea.com)
URLリンク(coronado.s8.xrea.com)

でチェックすべき。

82:nobodyさん
06/06/24 13:01:58 .net
>>76
レッツか

83:nobodyさん
06/06/24 14:18:28 .net
>>76
バージョンを比較するなら

version_compare()
URLリンク(coronado.s8.xrea.com)

の方が相応しいね。

84:nobodyさん
06/06/29 22:48:30 JkUV3tHw.net
Perlで

$ref->{q_line} = param("line") ne "" ? param("line") : $ref->{line};

というスクリプトの ? や、 : の使い方が分かりません。
何で検索していいのかも分かりません・・・orz

85:nobodyさん
06/06/30 01:18:36 .net
>83
「条件演算子」で検索しる

86:nobodyさん
06/06/30 14:09:16 .net
トンクス
真ん中が条件とは・・・

87:nobodyさん
06/07/12 11:38:24 .net
>>83
そのサンプルに限ると3項演算子よりも
$ref->{q_line} = param("line") || $ref->{line};
がシンプル。


88:nobodyさん
06/08/01 23:23:24 .net
>>86
lineが0だとダメ

89:電脳プリオン
11/11/05 19:27:57.25 .net ?2BP(1960)
>>2

本7って何よ?

90:nobodyさん
13/06/15 21:32:22.92 jrOK9IM3.net
神スレ

91:nobodyさん
18/06/21 08:39:20.10 VtSVJLaY.net
プログラミングを誰でも習得できる方法は、「前場アキドルのプログラミングマスター方法」というブログで見られるらしいよ。ネットで調べると見られるらしいです。
TM13D

92:nobodyさん
23/01/24 14:55:54.19 .net
てすと

93:過去ログ ★
[過去ログ]
■ このスレッドは過去ログ倉庫に格納されています


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch