4
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2019-06-11

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

4
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?