パスワード管理システム、管理者ツール

パスワード管理、管理者ツールです。

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

 

としてあります。