PHP
phpMyadmin
MyS

PHPで、IDとパスワードの登録画面、確認画面をつくる


IDとパスワードの登録画面


ソース


<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<title>Hello shop</title>
<body>
スタッフ追加<br />
<br />
<form method="post" action="staff_add_check.php"> <!--postメソッドで、staff_add_check.phpに情報を引き渡す-->
スタッフ名を入力してください。<br />
<input type="text" name="name" style="width:100px"><br /> <!--入力された値はtext型。値はnameと名づける-->
パスワードを入力してください。<br />
<input type="password" name="pass" style="width:100px"><br /> <!--入力された値はpassword型。アスタリスク表示される。値はpassと名づける。-->
パスワードをもう一度入力してください。<br />
<input type="password" name="pass2" style="width:100px"><br /> <!--入力された値はtext型。値はpass2と名づける-->
<br />
<input type="button" onclick="history.back()" value="戻る"> <!--戻るボタンをクリックすると、前の画面に遷移する-->
<input type="submit" value="OK"> <!--OKボタンをクリックすると、staff_add_check.phpに遷移する-->
</form>
</body>
</html>


画面

image.png


確認画面


ソース

<!DOCTYPE htmel>

<html>
<head>
<meta charset="utf-8">
</head>
<title>Hello shop</title>
<body>
<?php
$staff_name=$_POST['name']; //前の画面から入力値を受け取り、$staff_nameに格納
$staff_pass=$_POST['pass']; //前の画面から入力値を受け取り、$staff_passに格納
$staff_pass2=$_POST['pass2']; //前の画面から入力値を受け取り、$staff_pass2に格納

$staff_name=htmlspecialchars($staff_name,ENT_QUOTES,'UTF-8'); //文字列に変換(セキュリティ対策)
$staff_pass=htmlspecialchars($staff_pass,ENT_QUOTES,'UTF-8'); //文字列に変換(セキュリティ対策)
$staff_pass2=htmlspecialchars($staff_pass2,ENT_QUOTES,'UTF-8'); //文字列に変換(セキュリティ対策)

//$staff_nameがカラならエラーメッセージを表示する
//$staff_nameが入力されていれば、$staff_nameを表示する
if($staff_name==''){
print 'スタッフ名が入力されていません。<br />';
}
else
{
print 'スタッフ名:';
print $staff_name;
print '<br />';
}

//$staff_passがカラならエラーメッセージを表示する
if($staff_pass==''){
print 'パスワードが入力されていません。<br />';
}

//$staff_pass、$staff_pass2が一致しなければ、エラーメッセージを表示する
if($staff_pass!=$staff_pass2){ //もしパスワード1とパスワード2の値が異なるなら
print 'パスワードが一致しません。<br />';
}

//$staff_name、$staff_pass、$staff_pass2がカラなら、または、$staff_pass、$staff_pass2が一致しなければ、戻るボタンのみを表示する
//入力項目が適切なら、戻るボタンとOKボタンを表示する。
if($staff_name==''|| $staff_pass=='' || $staff_pass2=='' || $staff_pass!=$staff_pass2){
print '<form>';
print '<input type="button" onclick="history.back()" value="戻る">';
print '<form>';
}
else
{
$staff_pass=md5($staff_pass); //パスワードをMD5規約に則って32桁のランダム値に変換
print '<form method="post" action="staff_add_done.php">';
print '<input type="hidden" name="name" value="'.$staff_name.'">'; //'<input type="hidden" name="name" value="'と$staff_nameをドットで連結
print '<input type="hidden" name="pass" value="'.$staff_pass.'">'; //hiddenにすることで画面に表示することなく次の画面に値を引き渡せる
print '<br />';
print '<input type="button" onclick="history.back()" value="戻る">';
print '<input type="submit" value="OK">';
print '</form>';
}
?>
</body>
</html>


画面

image.png


データベース接続

<!DOCTYPE html>

<html>
<head>
<meta charset="utf-8">
</head>
<title>Hello shop</title>
<body>

<?php
//tryはデータベースの接続エラー対策
try
{
// POSTメソッドで前の画面の入力値を取得する
$staff_name = $_POST['name'];
$Staff_pass = $_POST['pass'];

// セキュリティ対策入力値を文字列に変換
$staff_name = htmlspecialchars($staff_name,ENT_QUOTES,'UTF-8');
$Staff_pass = htmlspecialchars($Staff_pass,ENT_QUOTES,'UTF-8');

//データベースに接続
$dsn = 'mysql:dbname=shop;host=localhost;charset=utf8'; //shopはデータベース名を入力。''内は一切スペースを入れてはいけない
$user = 'root'; //rootにはユーザ名を入力
$password = ''; //''内にはパスワードを入力
$dbh = new PDO($dsn, $user, $password);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); //この行は定型文としてこのまま書く

// SQL分を使ってレコードを追加
$sql ='INSERT INTO mst_staff(name,password) VALUES (?,?)'; //'INSERT INTO mst_staff(name,password) VALUES (?,?)'を変数$sqlに格納する
$stmt = $dbh->prepare($sql); // レコードを追加する準備。この行は定型文としてこのまま書く
$data[] = $staff_name; // ?にセットしたいデータが入っている変数を書く
$data[] = $Staff_pass; // ?にセットしたいデータが入っている変数を書く
$stmt->execute($data); // SQL文で指令を出すための命令文。この行は定型文としてこのまま書く

// データベースから切断するプログラム
$dbh = null;

//結果を表示
print $staff_name;
print 'さんを追加しました。<br />';

}
catch (Exception $e)
{
print 'ただいま障害により接続できません。';
exit(); //強制終了の命令
}
?>

<a href="sataff_list.php">戻る</a>

</body>
</html>


画面

image.png