ログインデータベース
自分の以前の職場では、PC室の稼働率を毎年報告せよと小うるさいことを言われていて、ノートに使用記録を書いていたんですが、結局誰もそんな面倒なことはやりたくないのが本音ですね。書かせている側も馬鹿らしいと思ってるので、書いてなくてもあまり煩いことは言わないでいると、だんだん書かなくなって、最後にはノートも白紙という状態になるのが常ってもんです。そこで、PC室のPCから直接使用登録できたら便利かなと思って作りました。
(ずっと以前はこれをVBで作って起動バッチに組み込んで置いたらとっても楽でした。なんせ、バッチ処理を抜けないと立ち上がらないんだから。。でも、ウイルス監視ソフトのせいで、バッチがウイルスとして認識されるみたいで、いちいち警告が出てうざったいのでやめました。)
ただ、人間は「しなくてもいい」ことはとことん避けるみたいで、このWeb登録もだんだん使われなくなって、結局ボツになりました。まあ、習作としてはよろしいのではないでしょうか(笑)。
CAUTION!注意
このスクリプトは、PHP初心者である管理者casterがPHPとMySQLの自習のために作ったもので、その内容は不完全きわまりないものです。XSS対策など、セキュリティ対策は何一つ無く、たとえあなたのPC上でこのスクリプトが動いたとしても、それは単なる偶然にすぎません。したがって、次のような注意をお願いします。
(1)セキュリティが確保され、かつ、悪意のあるユーザーのいないLAN内で使うこと。 (2)内容がいかに不完全でも、決して罵倒のメールなどを送りつけないこと。 (3)使った感想や、修正したスクリプトを作ってくださった方(そんな奇特な人はいないか。。)はメールをください。
データベースを作る
- あらかじめMySQLにデータベースを作っておく。phpMyAdminで次のようになっていればよい。なお、table名は"logindb"とする。
PHPスクリプト
つぎの5つのファイルを同じディレクトリに送る。作り方の作法がよくわからないうちに5つのファイルに別れてしまった。工夫すれば2つくらいになるのかもしれない。とりあえず、動いている状態でした。公開するのもはずかしいのですが、若き日の記念として(なんだそれは!)残します。
logindbinput.php logindbfind.php logindb.html logindbinput.html logindbfind.php
- logindbinput.php
<html> <HEAD> <META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=EUC-JP"> <TITLE>logindbinput.php</TITLE> </HEAD> <BODY BGCOLOR="#FFFF99"> <? //変数の取り出し $daytime = date("Y/m/d H:i:s"); $nen = $HTTP_POST_VARS["check1"]; $kumi = $HTTP_POST_VARS["check2"]; $kyouka = $HTTP_POST_VARS["check3"]; $cmt = $HTTP_POST_VARS["coment"]; //データベースに接続 if(!$con=mysql_connect("localhost","mysql user","mysql password")) { echo "データベースに接続を失敗しました。"; exit; } //データベースを選択 if(!mysql_select_db("database name",$con)) { echo "データベースを選択できませんでした。"; exit; } //フォームで送られてきた内容でINSERT文を作成 $sql = "insert into logindb(daytime,nen,kumi,kyouka,coment) values('$daytime','$nen','$kumi','$kyouka','$cmt')"; if(!$res=mysql_query($sql)){ echo "インサートSQL実行時にエラーが発生しました。"; exit; } //データベースから切断しました。 mysql_close($con); ?> <BR><BR><BR> <CENTER> <A href="logindbinput.html">入力完了:ここをクリックしてもどります</A><BR><BR> </CENTER> </body> </html>
- logindbfind.php
<html> <HEAD> <META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=euc-jp"> <TITLE>logindbinput.php</TITLE> </HEAD> <body> <BODY BGCOLOR="#FFFF99"> <? //データベースに接続 if(!$con=mysql_connect("localhost","mysql user","mysql password")) { echo "データベースに接続を失敗しました。"; exit; } //データベースを選択 if(!mysql_select_db("database name",$con)) { echo "データベースを選択できませんでした。"; exit; } //変数の取り出し $daytime = $HTTP_POST_VARS["daytime"]; $nen = $HTTP_POST_VARS["check1"]; $kumi = $HTTP_POST_VARS["check2"]; $kyouka = $HTTP_POST_VARS["check3"]; $cmt = $HTTP_POST_VARS["coment"]; //検索条件の取り出し $jouken="id >0"; if($daytime!="") { $jouken.=" AND daytime like '%$daytime%'"; } if($nen!="") { $jouken.=" AND nen like '%$nen%'"; } if($kumi!="") { $jouken.=" AND kumi like '%$kumi%'"; } if($kyouka!="") { $jouken.=" AND kyouka like '%$kyouka%'"; } if($cmt!="") { $jouken.=" AND coment like '%$cmt%'"; } $jouken.=" order by id "; //SQL文を作成 $sql=" select daytime,nen,kumi,kyouka,coment from logindb "; $sql.="where ".$jouken; //セレクト文を実行 if(!$res=mysql_query($sql)) { echo "セレクト時にSQL失敗しました。"; exit; } //検索結果の表示 echo "<BIG><BR><p>ログイン データベース 検索結果</p>"; echo "検索条件".$jouken; echo "<table border=1>"; echo "<tr><td>日時</td><td>学年</td><td>学級</td><td>教科</td><td>コメント</td></tr>"; while($row=mysql_fetch_array($res)) { echo "<tr>"; echo "<td>".$row["daytime"]."</td>"; echo "<td>".$row["nen"]."</td>"; echo "<td>".$row["kumi"]."</td>"; echo "<td>".$row["kyouka"]."</td>"; echo "<td>".$row["coment"]."</td>"; echo "</tr>"; } echo "</table>"; //結果セットの解放 mysql_free_result($res); //データベースから切断しました。 mysql_close($con); //echo "mysql_close($con)"; ?> </body> </html>
- logindb.html
<html> <HEAD> <META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=euc-jp"> <TITLE>ログインデータベース</TITLE> </HEAD> <body> <BODY BGCOLOR="#FFFF99"> <BIG> <BR> <p>ログイン データベース</p> <HR> <BR> <BR> <a href="logindbinput.html"> ログイン 入力 (logindbinput.html) </a> <BR> <BR> <a href="logindbfind.html"> ログイン 検索 (logindbfind.html) </a> <BR> <BR> <BR> <BR> <BR> <BR> <HR> </form> <HR> </BIG> <small> Powerd by Linux+Apache+MySQL+PHP (LAMP!) Copyright Caster works 2003. </small> </body> </html>
- logindbinput.html
<html> <HEAD> <META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=euc-jp"> <TITLE>ログインデータベース</TITLE> </HEAD> <body> <BODY BGCOLOR="#FFFF99"> <BIG> <p>ログイン データベース 入力画面</p> <HR> <BR> <form action="logindbinput.php" method="post"> <input type="RADIO" name="check1" VALUE=1>1年 <input type="RADIO" name="check1" VALUE=2>2年 <input type="RADIO" name="check1" VALUE=3>3年 <input type="RADIO" name="check1" VALUE=4>4年 <input type="RADIO" name="check1" VALUE=5>5年 <input type="RADIO" name="check1" VALUE=6>6年 <input type="RADIO" name="check1" VALUE=ひまわり>ひまわり <input type="RADIO" name="check1" VALUE=先生>先生 <BR><BR><BR><BR> <input type="RADIO" name="check2" VALUE=1>1組 <input type="RADIO" name="check2" VALUE=2>2組 <input type="RADIO" name="check2" VALUE=3>3組 <input type="RADIO" name="check2" VALUE=4>4組 <BR><BR><BR><BR> <input type="RADIO" name="check3" VALUE=総合>総合 <input type="RADIO" name="check3" VALUE=せいかつ>せいかつ <input type="RADIO" name="check3" VALUE=社会>社会 <input type="RADIO" name="check3" VALUE=理科>理科 <input type="RADIO" name="check3" VALUE=国語>国語 <input type="RADIO" name="check3" VALUE=算数>算数 <input type="RADIO" name="check3" VALUE=音楽>音楽 <BR> <input type="RADIO" name="check3" VALUE=図工>図工 <input type="RADIO" name="check3" VALUE=体育>体育 <input type="RADIO" name="check3" VALUE=学活>学活 <input type="RADIO" name="check3" VALUE=その他>その他 <input type="RADIO" name="check3" VALUE=研修>研修 <BR> <HR> コメント:<input type="TEXT" name="coment" size=40 maxlength=80 > <HR> <input type="submit" name="exec" value="入力データをおくる"> <BR> <input type="reset" name="exec" value="やりなおし"> </form> <HR> </BIG> <small> Powerd by Linux+Apache+MySQL+PHP (LAMP!) Copyright Caster works 2003. </small> </body> </html>
logindbfind.html
<html> <HEAD> <META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=EUCJ"> <TITLE>ログインデータベース</TITLE> </HEAD> <body> <BODY BGCOLOR="#FFFF99"> <BIG> <BR> <p>ログイン データベース 検索画面</p> <form action="logindbfind.php" method="post"> <HR> 日時で検索:<input type="TEXT" name="daytime" size=22 maxlength=22 > (2003年11月分なら 2003/11/ と入力) <HR> <input type="RADIO" name="check1" VALUE=1>1年 <input type="RADIO" name="check1" VALUE=2>2年 <input type="RADIO" name="check1" VALUE=3>3年 <input type="RADIO" name="check1" VALUE=4>4年 <input type="RADIO" name="check1" VALUE=5>5年 <input type="RADIO" name="check1" VALUE=6>6年 <input type="RADIO" name="check1" VALUE=ひまわり>ひまわり <input type="RADIO" name="check1" VALUE=先生>先生 <BR><BR><BR><BR> <input type="RADIO" name="check2" VALUE=1>1組 <input type="RADIO" name="check2" VALUE=2>2組 <input type="RADIO" name="check2" VALUE=3>3組 <input type="RADIO" name="check2" VALUE=4>4組 <BR><BR><BR><BR> <input type="RADIO" name="check3" VALUE=総合>総合 <input type="RADIO" name="check3" VALUE=せいかつ>せいかつ <input type="RADIO" name="check3" VALUE=社会>社会 <input type="RADIO" name="check3" VALUE=理科>理科 <input type="RADIO" name="check3" VALUE=国語>国語 <input type="RADIO" name="check3" VALUE=算数>算数 <input type="RADIO" name="check3" VALUE=音楽>音楽 <BR> <input type="RADIO" name="check3" VALUE=図工>図工 <input type="RADIO" name="check3" VALUE=体育>体育 <input type="RADIO" name="check3" VALUE=学活>学活 <input type="RADIO" name="check3" VALUE=その他>その他 <input type="RADIO" name="check3" VALUE=研修>研修 <BR> <HR> コメントで検索:<input type="TEXT" name="coment" size=40 maxlength=80 > <HR> <input type="submit" name="exec" value="入力データをおくる"> <BR> <input type="reset" name="exec" value="やりなおし"> <input type="hidden" name="page_num" value="0"> </form> <HR> </BIG> <small> Powerd by Linux+Apache+MySQL+PHP (LAMP!) Copyright Caster works 2003. </small> </body> </html>