まずはphpでランダムに文字を選び文字列を作成する方法です。
パスワード作成に使えるランダムな文字列を生成するには、まず表示候補の文字の配列を用意します。
$sml=array("a","b","c","d","e","f","g","h","i","j","e","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"); $big=array("A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"); $suj=array("0","1","2","3","4","5","6","7","8","9");
これらはアルファベットの小文字と大文字、そして数字を文字として持たせた配列です。
分けてあるのは、後で「アルファベットの小文字と数字だけ」とか「アルファベットだけ」とかのように分離させる機能を持たせる為です。
ですから、これらを最初に結合させる必要があります。
$lists=array(); $lists=array_merge($sml,$big); $lists=array_merge($lists,$suj);
array_mergeは配列と配列を結合させる命令です。
最初のarray()で配列を初期化し、次のarray_merge()でアルファベットの小文字と大文字を結合、そしてそれと数字を結合させます。
これで$listsに必要な情報は入りました。
最後にランダムで必要な文字数だけ表示させる命令を書きます。
$m=count($lists); $datas=""; $n=10; if($m!=0) { for($i=0;$i<$n;$i++) { $datas.=$lists[rand()%$m]; } } print $datas;
$nは必要な文字数です。
$m=count($lists);で$mに配列の総要素数を入れます。
rand()は実行毎にランダムな数字を返す関数で、この数字を$mで割った余りが$lists配列の範囲内のランダムな数になります。
後は$n回のforループで全ての文字が入った$listsから1文字ずつを$datasに追加して行きます。
これで$n回繰り返し終われば$datasには$n個のランダムな文字列が入っていると言う訳です。
改善するべき点は
これでもランダムな文字列は出来ますが自由さがありません。
ソースコードを必要に応じて弄れば必要な形式のパスワードも得られると思いますが、やはり不便です。
ということで次回はフォームを用いて抽出する文字の選択が出来るように改造します。
phpとフォームでパスワード作成に使えるランダムな文字列を生成するツールの解説