【PHPのお勉強】パスワードを生成するプログラム
2020年05月14日
事務所の本棚になぜかあった「たったコレだけでPHPプログラミングが理解できる本」を読みながら、PHPの勉強を始めてみました。
読んでいるだけでは自分が理解できているかわからないので、簡単なプログラムを作ってみようと思い、今回は、乱数を使って「パスワードを生成するプログラム」を作ってみました。
PHPを使ってパスワードを生成する
パスワードを自動生成するためには、基本的には次の関数を利用します。
- randでランダムに文字を取得
- forループで取得した文字を繰り返す(今回は8文字)
- printで生成した文字列を出力
具体的にはこのような感じです。
<?php //アルファベットと数字と記号の配列を登録 $words = array_merge( range( 'a', 'z'), range( 'A', 'Z'), range( '0', '9') , range( '!' , '/' )); //8文字をランダムに組み合わせる $random_words = ""; for( $i = 0 ; $i < 8 ; $i++) { $random = rand( 0 , 76 ); $random_words = $random_words . $words[ $random ] ; } //パスワードを生成 print( $random_words ); ?>
array_merge( range( ‘a’, ‘z’),
の箇所は、「a ~ z」の文字列を全部書くのは面倒だからまとめちゃうね的な命令です。
$random = rand( 0 , 76 );
の箇所は、「a ~ z」、「A ~ Z」、「0 ~9」、「! ~ /」全部で77個あるのでその中でランダムに配置してよ的な命令です。
クリックするたびにパスワードを作り直すボタンも作る
PHPのお勉強としては、上記の内容で問題なくできたのですが、せっかくならクリックするたびにパスワードを再生成するようにしたい!と思うのが人の性。
というわけで、クリックするとリロードするボタンを作ります。
ここでは、PHPではなく、JavaScriptを使います。
function pass() { location.reload(); }
せっかくなのでパスワードをクリップボードにコピーするボタンも作る
さらに、生成されたパスワードをクリップボードにコピーするボタンもあった方が便利でしょ!
ということで、コピーボタンも作ります。
function copy() { let text = document.getElementById('text'); text.select(); document.execCommand('copy'); }
まとめ
PHPでパスワードを生成し、JavaScriptでクリップボードに保存するプログラムが書けましたので、合体して完成させます。
<script> //リロードさせる function pass() { location.reload(); } //クリップボードにコピー function copy() { let text = document.getElementById('text'); text.select(); document.execCommand('copy'); } </script> <?php //アルファベットと数字と記号の配列を登録 $words = array_merge( range( 'a', 'z'), range( 'A', 'Z'), range( '0', '9') , range( '!' , '/' )); //8文字をランダムに組み合わせる $random_words = ""; for( $i = 0 ; $i < 8 ; $i++) { $random = rand( 0 , 76 ); $random_words = $random_words . $words[ $random ] ; } ?> <input type="textarea" value="<?php print( $random_words );?>" id="text" /> <button type="button" onclick="pass()">パスワード生成</button> <button type="button" onclick="copy()">コピー</button>
今回作ってみて思ったことは、単に参考書を読んでいるだけではなく、実際にこんなの作ってみようと思って手を動かすことが大切ってことです。
実際に作ってみることで、こんな機能があったらいいなという欲求が生まれ、自分が何がわかっていて、何ができないのかがはっきりします。
プログラムだけではなく、何かを勉強したいなと思っている方は、迷わずまずは手を動かしてみることをオススメしつつ、今日のお勉強のまとめとしたいと思います。
パスワード生成するサンプルページ
実際に、作ってみたページです。
パスワード生成するサンプルページ