パスワード管理システム、管理者ツール
パスワード管理、管理者ツールです。
1.ログイン
2.リスト表示&データ更新
となっています。
<?php /*履歴 2020/07 作成。 */ #ファイル名 $script="kanri.php"; $btmsg = " 確認する "; include("../login_pdo.php"); include("./parts.php"); #初期モード if($mode == ""){$mode = "LOGIN";} if($btn == ""){$btn = "ログインする";} $date_c = date("Y-m-d H:i:s"); #入力簡易化 extract($_POST); #POSTされてたら if ($_SERVER["REQUEST_METHOD"]=="POST"){ if (isset($_POST['submit'])){ require("./error_kan.php"); } if($err == "0"){ if($email_c == "" & $pass_c == ""){ $msg = "ログインしました。"; } else{ //SQLの準備 $sql = "UPDATE `password` SET pass_c = :pass,date_c = :date WHERE email_c = :email"; $pre = $dbh->prepare($sql); $pre->bindValue(':pass',$pass_c, PDO::PARAM_STR); $pre->bindValue(':date',$date_c, PDO::PARAM_STR); $pre->bindValue(':email',$email_c, PDO::PARAM_STR); //SQL実行 $result = $pre->execute(); #エラーの場合 if ($result == false) { $msg = "処理エラーが発生しました。"; } else{ $msg = "実行しました。"; } } } } ?> <!DOCTYPE html> <html lang="jp"> <head> <title>パスワード管理 | OLD HOUSE</title> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" type="text/css" href="css/kube.css" /> <link rel="stylesheet" type="text/css" href="css/master.css" /> <link rel="stylesheet" type="text/css" href="./style.css" /> </head> <body> <?php $header; ?> <div id="page"> <h1>パスワード管理</h1> ユーザーパスワードを管理します。<br> <br> <div>- <?php echo $mode;?> -</div> <font color=red><? echo $msg_e.$msg; ?></font> <form method="post" action="<?php echo $_SERVER['SCRIPT_NAME']; ?>" class="forms"> <fieldset> <br> <?php if ($mode == "LOGIN") : ?> <label for="kpass_c" class="bold"><font color=red>管理用パスワード(admin)</font> <input type="text" name="kpass_c" class="width-30" value="<? echo $kpass_c; ?>" required /></label> <?php endif;?> <?php if ($mode == "EDIT") : ?> <label for="email_c" class="bold">メール <input type="email" name="email_c" class="width-90" value="<? echo $email_c; ?>" /></label> <label for="email_c" class="bold">ユーザーパスワード <input type="text" name="pass_c" class="width-30" value="<? echo $pass_c; ?>" /></label> <?php endif;?> <font color=#006699><? echo $kamsg; ?></font> <input type=submit name="submit" value="<? echo $btn; ?>" class="btn btn-blue"> <br><br> </fieldset> <input type=hidden name=mode value=<?php echo $mode; ?>> </form> <?php if ($mode == "EDIT") : ?> <br><br> <div>リスト</div> <table width=100%> <tr><th width=10%>No</th><th widh=35%>メール</th><th width=45%>ユーザーパスワード</th><th>更新日時</th></tr> <?php //SQLの準備 $sql = "select * from password ORDER BY email_c"; //SQL実行 $stmt = $dbh->query($sql); $i = 1; //SQL結果の取り出し while($row = $stmt -> fetch(PDO::FETCH_ASSOC)){ extract($row); echo "<tr><td>{$i}</td><td>$email_c</td><td>$pass_c</td><td>$date_c</td></tr>"; $i++; } ?> </table> <?php endif;?> </div> <br> <?php echo $footer; ?> </body> </html>
パスワード管理システム、エラー処理
エラー処理ファイルを用意。
<?php /*修正 2020/07 作成。 */ ###エラーチェック START $err="0"; ### エラーチェック if ($email_c == "") {$msg_err.="<br>Eメールを記入して下さい。";$err++; } elseif ($email_c != "" and !eregi("^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,4}$",$email_c)) {$msg_err.="<br>Eメールを正しく記入して下さい。";$err++; } ###エラーチェック END if($err > "0"){ $msg_e=" Error!"; } else{ $msg_err="<br><font color=#006699>確認ボタンをチェックし、実行して下さい。</font> "; $msg_fin="<input type=checkbox name=kakunin value=yes> 確認</font>"; } ?> <||
パスワード管理システム、利用者画面
<?php
/*履歴
利用者画面
2020/06 作成。
*/
#ファイル名
$script="index.php";
$btmsg = " 確認する ";
include("../login_pdo.php");
include("./parts.php");
$admin = "- <a href=kanri.php>admin</a> -";
#入力簡易化extract($_POST);
#POSTされてたら
if ($_SERVER["REQUEST_METHOD"]=="POST"){
if (isset($_POST['submit'])){
require("./error.php");
}
if($err == "0"){
#入力
if($kakunin == ""){
$btmsg = " 実行する ";
$kamsg = "$msg_fin";
}
#確認後
elseif($kakunin == "yes"){
require("./ok.php"); exit; }
}
}
?>
<!DOCTYPE html><html lang="jp">
<head> <title>パスワードのお知らせ</title>
<meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" type="text/css" href="css/kube.css" /> <link rel="stylesheet" type="text/css" href="css/master.css" /> <link rel="stylesheet" type="text/css" href="./style.css" />
</head>
<body>
<?php $header; ?>
<div id="page">
<h1>パスワードのお知らせ</h1>
パスワードがわからなくなった場合、登録メールで受信することが出来ます。<br><br><font color=red><? echo $msg_e.$msg_err; ?></font>
<form method="post" action="<?php echo $_SERVER['SCRIPT_NAME']; ?>" class="forms">
<fieldset><br>
<label for="email_c" class="bold">メール <input type="email" name="email_c" class="width-90" value="<? echo $email_c; ?>" required /></label>
<font color=#006699><? echo $kamsg; ?></font>
<input type=submit name="submit" value="<? echo $btmsg; ?>" class="btn btn-blue"> <br><br>
</fieldset>
</form>
<div align=right class=admin><?php echo $admin; ?></div>
</div>
<br>
ヘッダー、フッターファイル
パスワード管理システムのヘッダー、フッターファイルを作ります。
<?php
$header = '<div class="container row"><div class="header"> </a> ヘッダー</div></div>
<hr class="hr_h">';
$footer = '<div class="footer"><hr class="hr_f">
<b>フッター</b><br></div>';
?>
分けておくとあとの修正が楽に出来ます。
このあたりは好みですが。
DB接続ファイルを用意します
パスワード管理システムを作るにあたって、データベース接続用のファイルを用意します。
ファイル名は、login_pdo.php とします。
<?php
/*履歴
2020/06 作成。
*/
$user = "user"; //ユーザー名
$pass = "pass100"; //パスワード
//通常処理
try{
//PDOオブジェクトの作成
$dbh = new PDO('mysql:host=ホスト名;dbname=DB名;charset=utf8', $user, $pass); //echo "接続成功"; #テスト時のみ表示
}
//エラー処理
catch(PDOException $e) {
echo "接続エラー". $e->getMessage() . "\n";
exit();
}
$foot = '<hr color="#6B8E23" height="1"><center>
<font color="#6B8E23" size=2>- footer - </font></center>';
?>
パスワード管理システム
会社などで使えるパスワード管理のシステムを考えてみます。
データベースを使い、メール、パスワードを保存。
パスワードがわからない人にメール送信してお知らせ。
●データベースのフィールド
コード
日付
メール
パスワード
4フィールドのデータベースを作ります。
MySQLを使い、phpMyAdminで、SQLコマンドをうち、テーブルを用意します。
CREATE TABLE `password` (
`id_c` int(3) AUTO_INCREMENT,
`date_c` timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`email_c` varchar(60) ,
`pass_c` varchar(30) ,PRIMARY KEY(id_c))
テーブル名は、password
フィールドは、それぞれ
id_c
date_c
email_c
pass_c
としてあります。