前回の記事でphpを用いてランダムな文字列を作る方法を解説しました。
今回はフォームを使い、それの抽出する要素を制御する方法を解説します。
サンプル
[rand03]
解説
このサンプルは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"];}?>> ②何個作成しますか? <input type="text" name="len" maxlength="4" <?php if(isset($_POST["len"])){ echo 'value='.$_POST["len"];}?>> ③使用する文字列を決めて下さい <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) <input type="submit" name="botan" value="ランダム英数字の生成"> <TEXTAREA name="moto" size="70" placeholder="ここに生成した文字を出力します。" style="width:100%;height:160px;" wrap="off">
フォームの開始部分はここまで。
後はTEXTAREAの内部に表示されるように、ここに前回の記事で書いたプログラムを書きます。
$datas.=" "; echo $datas; $datas=""; ?> </TEXTAREA> </form>
最後に「echo」か「print」を使い、変数に入れた文字列に改行コードを追加し出力させてフォームを閉じます。
この時、重要なのが改行コードです。
$datas.="\r\n";
ではなく
$datas.=" ";
を使います。
何故なら、textarea内部で「\r\n」を使うと「<br />」とか「</p>」とか「<p>」に変換されてしまうからです。
例えば
①を「\r\n」、②を「 」として
$datas="①の場合\r\n\改行"; print $datas $datas="②の場合 改行"; print $datas;
これをtextareaに書くと…
となります。
ですのでtextarea内での改行は を使いましょう。
\r\nを使うと<br />に化けるので注意です。
改善すべき点
これで「ランダム英数字の生成」ボタンを押せばランダムな英数字の文字列が作成されるようになりました。
しかし、これではボタンを押す度にリロードされ、ページの表示位置が変わってしまいます。
これでは気に入る文字並びが出るまで、作成を繰り返すのに向いていません。
ということで次回はボタンを押してもページがリロードされずにphpを実行させるJavaScriptを使ってみます。
JavaScriptでサーバーにあるphpを実行させて結果を受け取る方法