phpとフォームでパスワード作成に使えるランダムな文字列を生成するツールの解説

この記事がお役に立てたならシェアしてくれると嬉しいです。

pay-1036480_640

前回の記事でphpを用いてランダムな文字列を作る方法を解説しました。
今回はフォームを使い、それの抽出する要素を制御する方法を解説します。

スポンサーリンク

サンプル

ランダムで英数字の文字列を作成するツールです。
パスワード作成などにお役立て下さい。

①何文字の文字列を作成しますか?

②何個作成しますか?

③使用する文字列を決めて下さい

アルファベットの大文字(ABCD…)
アルファベットの小文字(abcd…)
数字(0-9)


解説

このサンプルはPOSTメソッドで送っています。
まず、最初に$_POSTに初期値を入れます。

<?php
	if(empty($_POST))
	{
		$_POST=array("max"=>8,"len"=>5,"state02"=>1,"state04"=>1);
	}
?>

$_POSTが空だった時、つまり初回起動時に初期値を与えます。

パラメーターはそれぞれ…
“max”が文字数。
“len”が作成個数。
“state01″がアルファベット大文字を使用するかのフラグ。1で使用。
“state02″がアルファベット小文字を使用するかのフラグ。1で使用。
“state04″が数字を使用するかのフラグ。1で使用。
です。

<form method="post">
①何文字の文字列を作成しますか?
<input type="text" name="max" maxlength="4" <?php if(isset($_POST["max"])){ echo 'value='.$_POST["max"];}?>>
&nbsp;
②何個作成しますか?
<input type="text" name="len" maxlength="4" <?php if(isset($_POST["len"])){ echo 'value='.$_POST["len"];}?>>
&nbsp;
③使用する文字列を決めて下さい
<input type="checkbox" name="state01" value="1" <?php if(isset($_POST["state01"])){ echo 'checked="checked"';}?>>アルファベットの大文字(ABCD...)
<input type="checkbox" name="state02" value="1" <?php if(isset($_POST["state02"])){ echo 'checked="checked"';}?>>アルファベットの小文字(abcd...)
<input type="checkbox" name="state04" value="1" <?php if(isset($_POST["state04"])){ echo 'checked="checked"';}?>>数字(0-9)
&nbsp;
<input type="submit" name="botan" value="ランダム英数字の生成">
&nbsp;
<TEXTAREA name="moto" size="70" placeholder="ここに生成した文字を出力します。" style="width:100%;height:160px;" wrap="off">

フォームの開始部分はここまで。

後はTEXTAREAの内部に表示されるように、ここに前回の記事で書いたプログラムを書きます。

	$datas.="&#13;";
	echo  $datas;
	$datas="";
?>
</TEXTAREA>
</form>

最後に「echo」か「print」を使い、変数に入れた文字列に改行コードを追加し出力させてフォームを閉じます。

この時、重要なのが改行コードです。

$datas.="\r\n";

ではなく

$datas.="&#13;";

を使います。

何故なら、textarea内部で「\r\n」を使うと「<br />」とか「</p>」とか「<p>」に変換されてしまうからです。

例えば
①を「\r\n」、②を「&#13;」として

$datas="①の場合\r\n\改行";
print $datas
$datas="②の場合&#13;改行";
print $datas;

これをtextareaに書くと…

となります。

ですのでtextarea内での改行は&#13;を使いましょう。
\r\nを使うと<br />に化けるので注意です。

改善すべき点

これで「ランダム英数字の生成」ボタンを押せばランダムな英数字の文字列が作成されるようになりました。
しかし、これではボタンを押す度にリロードされ、ページの表示位置が変わってしまいます。
これでは気に入る文字並びが出るまで、作成を繰り返すのに向いていません。

ということで次回はボタンを押してもページがリロードされずにphpを実行させるJavaScriptを使ってみます。
JavaScriptでサーバーにあるphpを実行させて結果を受け取る方法

スポンサーリンク

この記事がお役に立てたならシェアしてくれると嬉しいです。


最新記事の更新情報をお届けします。

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)