はじめに
ここでは、PHPを使ったランダムな文字列のパスワードを生成し、ファイルに生成したパスワード保存するプログラムを作っていきます。
すでにパスワード生成に関しては色んな方が記事を出してます。しかしエンジニア歴が浅く、かつPHP触った事ない私にとっては少々わかりづらかったので、そんな方にもわかりやすく向けた解説付きの記事となります。
少しでも参考になれば嬉しいです
目的
パスワード変更の際、毎回毎回どんなパスワードにしようか考えていては疲れてしまいます。定期的なパスワード変更を実施している場合などは特にそうです。なのでPHPで人間が頭を使う部分を自動化させようというのが目的です。
パスワードの定期的な変更は賛否ございますが、パスワードを知っている職員が退職し、情報漏洩防止の為にパスワードの変更を余儀なくされるケースはあるかと思います。そんなシーンを想定しています。
なぜ、規則性のない英数字ではなく単語なのか。という点に関しては、
・その方がパスワードを覚えやすい。
・入力もしやすい。
・人に伝えやすい。
という理由です。
単語じゃなくていいという方は、こちらの記事→ランダムなパスワードを1行で生成するが参考になります。
完成品
<?php
function password()
/* パスワード生成 */
{
$word = array('fire', 'dragon', 'magic');
$keys = array_rand($word, 3);
shuffle($keys);
$pws = "";
foreach ($keys as $key) {
$pws = $pws.$word[$key];
}
return $pws;
}
file_put_contents("sample.csv", password());
?>
こちらです。
サンプルコードの為、配列の中に単語を3つしか用意していませんがもっと入れておくといいと思います。
解説
まずはphpファイルを作って、それの中にphpタグを作りましょう。
このタグの中に書いていけば、phpを書いたことになります。
<?php
function password()
/* パスワード生成 */
パスワード生成をする関数を作成します。function password() {}
とすることで、password()で関数を実行できます。
<?php
function password()
/* パスワード生成 */
{
$word = array('fire', 'dragon', 'magic');
phpでは$
で変数を定義します。なのでここでは$word
に配列が与えられ、その配列の中にはパスワードに使用する単語が入っています。
<?php
function password()
/* パスワード生成 */
{
$word = array('fire', 'dragon', 'magic');
$keys = array_rand($word, 3);
shuffle($keys);
$keys = array_rand($word, 3);
では、配列$word
の中から3つの単語をランダムに抜き出して、変数$keys
と定義しています。
shuffle($keys);
では、$keys
が持っている3つの単語の順番をランダムに入れ替えている、文字通りシャッフルをしています。
<?php
function password()
/* パスワード生成 */
{
$word = array('fire', 'dragon', 'magic');
$keys = array_rand($word, 3);
shuffle($keys);
$pws = "";
foreach ($keys as $key) {
$pws = $pws.$word[$key];
}
return $pws;
}
最終的にreturn
で生成した文字列を返したいので、$pws = "";
を定義しています。現在$pws
の中身は空ですが、ここに生成したパスワードを入れていきます。
foreach
は配列専用のforです。使い方はforと同じです。
array_rand($word, 3);
で抜き出した単語の数だけforeachが回るので、それを$pws
の中に足していきます。
$pws = $pws.$word[$key];
とすることで、
fire
firedragon
firedragonmagic
のようになります。
return $pws;
で先ほどのfiredragonmagic
を返り値としています。
<?php
function password()
/* パスワード生成 */
{
$word = array('fire', 'dragon', 'magic');
$keys = array_rand($word, 3);
shuffle($keys);
$pws = "";
foreach ($keys as $key) {
$pws = $pws.$word[$key];
}
return $pws;
}
file_put_contents("sample.csv", password());
?>
file_put_contents("sample.csv", password());
とすることで、sample.csvファイルを新規作成、そのファイルの中にpassword()
で返ってくる値が書き込まれます。すでにsample.csvが存在する場合は、上書きとなります。
さいごに
ここまで読んでくださってありがとうございました。
誤字脱字・発信した情報に間違い等ございましたら、指摘して頂けますと幸いです
また、説明にわかりづらい点がございましたら、改善致しますのでぜひコメントください