6 ~ 16 桁のユーザー名をいくつか生成します (主にテキスト操作)。文字列パッケージが必要です。主に 3 つの手順が含まれます。
プログラム 1: 辞書からデータをランダムに抽出し、新しいファイルに書き込みます。 (1.php)
<?php
/* 辞書ファイルからランダムな値を抽出*/
$file1 = "./Words.dic";
$file2 = "./common_pass_mini.dic";
$file3 = "./Sys_Month_Date.Dic";
$rfile = "./5.dic";
$n = 2000;
//辞書を抽出します。
$basef = ファイル($file1);
$extf = ファイル($file2);
$extf2 = ファイル($file3);
$bf_sum = (count($basef)-1);
$ef_sum = (count($extf)-1);
$ef2_sum =(count($extf2)-1);
//ランダムなユーザー名を取得します
for ($i=0; $i<$n; $i++)
{
$bn = crand(0, $bf_sum);
$en = crand(0, $ef_sum);
$en2 = crand(0, $ef2_sum);
$name = $basef[$bn]."_".$extf[$en];
$name = str_replace("rn", "", $name);
$all_name[] = $name;
}
//ファイルに書き込みます
$result = implode("rn", $all_name);
$fp = fopen($rfile, "a+") または die('$rfile を開くのに失敗しました');
if (fwrite($fp, $result)) {
echo 'ユーザーの書き込みが成功しました!';
} それ以外 {
echo 'ユーザーの書き込みに失敗しました';
}
//乱数関数を生成する
関数 crand($start, $end)
{
return mt_rand($start, $end);
}
?>
プログラム 2: 上記で生成された複数のファイルの結果をマージします。 (2.php)
<?php
/* 生成されたすべての結果をマージする knowsky.com*/
$result_file = "./result.dic";
$fp = fopen($result_file, "a+") または die("Open $result_file failed");
// マージ 1. dic ~ 5.dic
for ($i=1; $i<=5; $i++)
{
$cur_file = file_get_contents($i.".dic");
fwrite($fp, $cur_file);
}
//10.dic~11.dicをマージ
for ($i=10; $i<=11; $i++)
{
$cur_file = file_get_contents($i.".dic");
fwrite($fp, $cur_file);
}
fclose($fp);
echo '書き込み成功'
?>
プログラム 3: 重複する値と 6 ~ 16 の範囲に収まらない値をフィルタリングし、最終結果 (3.php) を生成します。
<?php
/* 最終結果を生成します*/
$file = "./result.dic";
$target = "./target.dic"
//重複した値を削除します。
$files = ファイル($file);
$files = array_unique($files);
//値が6桁以上16桁未満かを判定
$sum = カウント($files);
for ($i=0; $i<$sum; $i++)
{
if (strlen($files[$i])>=6 && strlen($files[$i])<=16) {
$rs[] = $files[$i];
} それ以外 {
続く;
}
}
//対象ファイルに書き込み
$result = implode("", $rs);
$fp = fopen($target, "a+") または die("$target のオープンに失敗しました");
fwrite($fp, $result);
echo '書き込み成功'
?>
基本的に手動で行うと、上記で 2.7W のランダムなユーザー名が生成されます (笑)。これで十分であることが保証されています。