WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:Perl詳しい方 ID処理について

0:[投稿] DAI [2005/09/25 22:26 ][環境:? ?]

プログラム自体はそこまで複雑ではないと思いますが


IPからIDを生成したい。
IDは文字列ではなく五種類の色(厳密に言えば■にタグで色をつける。ID:■■■■■)


流れとしては

IPから暗号化してカラーコード(#FF0000等)を五つ作成
(abcdef0123456789の中から6個抽出して#の後に付ける×5回)
得られた結果をタグに表示

<span style="color:$idcolor1;">■</span>
<span style="color:$idcolor2;">■</span>
<span style="color:$idcolor3;">■</span>
<span style="color:$idcolor4;">■</span>
<span style="color:$idcolor5;">■</span>


↓これは通常の文字列のID処理ですが参考に貼っておきます

sub ips{
    $ips = $ENV{'REMOTE_ADDR'};
    $ips =~ s/\.//g;
    $stringsid = $ips;
    $saltid = "angou";
    $cryptid = crypt $stringsid,$saltid;
    $stringid = substr $cryptid,-8,8;
    $id = "[$stringid]";
}


1:[回答] miz [2005/09/26 16:44 ]

暗号化の法則が解らないので、ランダムに色番号を作成するとして
以下のようなのはいかがですか?

@hexstr = qw(0 1 2 3 4 5 6 7 8 9 a b c d e f);
for($i=0; $i<5; $i++){
$colorlist[$i] = '#'. join('', map($hexstr[$_], &make_list()) );
}
print join ('<br>',map( "<font color='$_'>■$_</font>", @colorlist) );    # 表示テスト
##### 0-15 の数値6個からなる配列を返す関数作成。
sub make_list(){
my @num = ();
for($i=0; $i<6; $i++){
 push @num, int( rand 16);
}
return @num;
}

make_list()の内容を適宜、置き換えるとよいでしょう。


2:[回答] sim [2005/09/28 14:41 ]

$ip = "127.0.0.1";
$X = 15214.398816525936126708984375;

@ip = split(/\./,$ip);

$i = 0;
foreach(@ip){
    $color[$i++] = sprintf("#%06X",($_ + 1) ** 3 -1);
    $color[4] .= sprintf("%03d",$_);
}
$color[4] = sprintf("#%06X",$color[4] / $X - 1);

print "<span style='color:$color[0]'>■</span>";
print "<span style='color:$color[1]'>■</span>";
print "<span style='color:$color[2]'>■</span>";
print "<span style='color:$color[3]'>■</span>";
print "<span style='color:$color[4]'>■</span>";

全然暗号化してないですが・・・
こんなのはどうでしょう。

回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]

ChaichanPAPA's World