一括表示

投稿時間:2002/10/19(Sat) 17:40
投稿者名:アイン
Eメール:
URL :
タイトル:
リメイクに新機能
リメイクに新機能を付けようと思い
色々やってみたんですがソート?がうまくいきませんでした(汗)
とりあえず今はこんな感じです

sub IPLOOK2{
&ERROR('パスワードエラー!!') if crypt ($FORM{'password'},eb) ne "$MASTER_PWD";
&HEADER;
&DBM_INPORT(L);
print<<"HTMLTAG";
<table $TABLE_STYLE>
<tr><td bgcolor=$TABLE_COLOR2 colspan=5>ログイン者IP順表\示2</td></tr>
<tr>
<td bgcolor=$TABLE_COLOR2>番号</td>
<td bgcolor=$TABLE_COLOR2>ログイン時間</td>
<td bgcolor=$TABLE_COLOR2>名前</td>
<td bgcolor=$TABLE_COLOR2>IP</td>
<td bgcolor=$TABLE_COLOR2>ホスト名</td>
</tr>
HTMLTAG
while(my($key,$val) = each %L){
($name,$addr,$host) = split(/!/,$val);
if($addr =~ /(.*)\.(.*)\.(.*)\.(.*)$/){$ip = "$1$2$3$4";}
push(@log,"$ip$key<>$addr<>$key<>$name<>$host<>\n");
}
@sorted = sort {$a <=> $b} @log;
foreach(@sorted){
$lc++;
@lga=split(/<>/);
$timeA = &DATE_DECORD($lga[2]);
if ($lc <= 1000){
if($lga2[5] != $lga[3] || $lga2[6] != $lga[1]){
$lga2[5]=$lga[3];
$lga2[6]=$lga[1];
print<<"TABLEHTML";
<tr>
<td bgcolor=$TABLE_COLOR1>$lc</td>
<td bgcolor=$TABLE_COLOR1>$timeA</td>
<td bgcolor=$TABLE_COLOR1>$lga[3]</td>
<td bgcolor=$TABLE_COLOR1>$lga[1]</td>
<td bgcolor=$TABLE_COLOR1>$lga[4]</td>
</tr>
TABLEHTML
}}}
print "</td></tr></table>";
&BOTTOM;
}

やりたい事はログインした人を時間に関係なくIP順に並べ
プレイヤーネーム、IPのどちらかが違う時に記録する。
と、いうものです。

投稿時間:2002/10/19(Sat) 18:16
投稿者名:メルチャ♪
Eメール:
URL :
タイトル:
Re: リメイクに新機能
なるほど。
多重登録を取得したいってことですよね。

if ($lc <= 1000){
if($lga2[5] != $lga[3] || $lga2[6] != $lga[1]){
$lga2[5]=$lga[3];
$lga2[6]=$lga[1];

print<<" TABLEHTML";
<tr>
<td bgcolor=$TABLE_COLOR1>$lc</td>
<td bgcolor=$TABLE_COLOR1>$timeA</td>
<td bgcolor=$TABLE_COLOR1>$lga[3]</td>
<td bgcolor=$TABLE_COLOR1>$lga[1]</td>
<td bgcolor=$TABLE_COLOR1>$lga[4]</td>
</tr>
TABLEHTML
}

上記を少し整理してみましょう。

if($lga2[5] != $lga[3] || $lga2[6] != $lga[1]){

まずここは!=の式を使用していますが、名前を!=で数字扱いとしてもあまり意味を持たないと思いますので、neに変えたほうが良いでしょう。
$addrも一応文字扱いとした方が性格になると思いますのでneの方が良いと思います。

$lga2[5]=$lga[3];
$lga2[6]=$lga[1];

上記の部分ですが、コレだと常に同じ変数に入れている状態になります。
if($lga2[5] != $lga[3] || $lga2[6] != $lga[1]){
上記の部分が「前回の名前と同じだったらとか、前回のIPと同じだったら。」
って感じのものになってしまうと思います。

なので、

if($lga2[5] != $lga[3] || $lga2[6] != $lga[1]){
$lga2[5]=$lga[3];
$lga2[6]=$lga[1];

の部分を

if($DMYA{"$lga[3]"} || $DMYB{"$lga[1]"}){
$DMYA{"$lga[3]"}=1;
$DMYB{"$lga[1]"}=1;

って状態が良いかと思います。
名前が255.255.255.255ってキャラもあまりいないと思うので同じハッシュ名にしちゃってもあまり問題ないと思います。

あと、多重を判断するにはクッキーの名前と$FORM{'pname'}の違いを検知したほうが早いと思います。
if($COOKIE{'pname'} ne $FORM{'pname'}){データ保存処理}
って感じのをsub STATUS{}のif($FORM{'login'}){}の部分に入れてあげると大体引っかかってくれると思います。

投稿時間:2002/10/19(Sat) 20:48
投稿者名:アイン
Eメール:ainebs@excite.co.jp
URL :http://www.st.rim.or.jp/~h-mizu/cgi-bin/ebs/ebs.cgi
タイトル:
Re^2: リメイクに新機能
あ、「=」は数字で「eq」は文字列を判断するんですね(今更)

最近、脳ミソが腐りかけてるのでわからない事が結構ありますが
色々調べてやってみます。

もう一つ質問?なんですが改造アイディア(アイディアのみ)・改造
の投稿はしてもよろしいでしょうか?

投稿時間:2002/10/19(Sat) 20:53
投稿者名:メルチャ♪
Eメール:
URL :
タイトル:
Re^3: リメイクに新機能
はい☆良いですよ♪

- -




100MB無料ホームページ格安☆高機能レンタルサーバーダイエット特集
可愛いサーバロリポップClick Here!女性のための出会い ネットで小遣い稼ぎ[無料]HPで広告収入