16.PHPでユーザ登録を行ってみる。
 1)ユーザ登録の仕組み(フローチャート)
   ユーザ登録は、すでに同じユーザ名が登録されていれば要録しないようにチェックを行う必要があります。
   <ユーザ登録のフローチャート>
 
php14-1a  ユーザ名とパスワードを入力して送信するフォームを作ります。
 パスワードは、間違って登録しないように確認用のテキストフィールドを
用意しておきます。
  php14-1b





 フォームから送信されてきた登録用パスワードが一致しているかを調べて
一致していない場合は、再入力を促すフォームを表示させます。
  php14-1c
 ユーザ情報が登録されたデータベースを参照して、同じユーザ名が
存在するかを調べて同じユーザ名が存在する場合は、再入力を促す
フォームを表示させます。


 ユーザ情報が登録されたデータベースを参照して、同じユーザ名が
存在するかを調べて同じユーザ名が存在する場合は、再入力を促す
フォームを表示させます。
 同じユーザが存在しない場合は、ユーザ登録処理へ移ります。
  php14-1d

 ユーザ登録処理を行います。
 2)ユーザ登録を行うためのページ(userTou.htm)
<!doctype html>
<html>
<head>
<meta charset="utf-8"> <title>ユーザ登録</title> </head> <body> ユーザ登録<br> <form action="userTou.php" method="post" name="form1"> ユーザ名: <input name="fUserName" type="text" id="fUserName"><br> パスワード: <input name="fPassWd1" type="password" id="fPassWd1"><br> 確認用パスワード: <input name="fPassWd2" type="password" id="fPassWd2"> <input type="submit" name="Submit" value="登録"> <input type="reset" name="Submit2" value="クリア"> </form> </body> </html>
3)ユーザ登録を行うページ(userTou.php)
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>ユーザ登録</title>
</head>
<body>
<?php
$sUserName=$_POST['fUserName'];
$sPassWd1=$_POST['fPassWd1'];
$sPassWd2=$_POST['fPassWd2']; //以下のプログラムは、確認用のパスワードと一致しているかをチェックしている。
//不一致のときは、そのままプログラムを終了している。(exit)
if($sPassWd1!=$sPassWd2){
echo "パスワードが一致しません。もう一度登録しなおしてください。<br>";
exit();
}
else{
$conn=mysqli_connect('localhost','root','******') or exit("MySQLへ接続できません。");
mysqli_select_db($conn,'userid_db') or exit("データベース名が間違っています。"); //以下のSQL文は、同じユーザ名が存在するかを調べるためのものである。
//パスワードをチェックしないのは、もし万が一、一致してしまうとユーザ名とパスワードがばれてしまうからである。
$sql="SELECT * FROM userid_tbl where userName='{$sUserName}';";
$result=mysqli_query($conn,$sql) or exit("データの抽出に失敗しました。"); //以下のプログラムは、すでに同じユーザ名が存在すれば、登録済みのメッセージを出すためのものである。
if(mysqli_num_rows($result)!=0){
echo "すでに{$sUserName}様は登録済みです。もう一度別の名前で登録してください。<br>";
}
else{ //以下のプログラムは新規登録を行うためのプログラムである。
$sql="INSERT INTO userid_tbl values(NULL,'{$sUserName}','{$sPassWd1}');";
$result=mysqli_query($conn,$sql) or exit("データの書き込みに失敗しました。");
echo "{$sUserName}様の登録が完了しました。";
}
mysqli_close($conn);
}
?>
</body>
</html>
<課題>  
  ①確認用パスワードと一致しない場合、再入力できるように3)のプログラムを変更しなさい。(以下のように表示させなさい。)
      
     パスワードが確認用パスワードと一致しません。もう一度やり直してください。 ← 赤色で表示させる。
     ユーザ名: ← 最初に入力したユーザ名を表示させる。
     パスワード:  
     確認用パスワード:
     

  ②すでに同じユーザ名のユーザが存在する場合、再入力できるように3)のプログラムを変更しなさい。(以下のように表示させなさい。)

     すでに同じユーザ名の方が登録されています。別のユーザ名で、もう一度やり直してください。 ← 赤色で表示させる。
     ユーザ名: ← 最初に入力したユーザ名を表示させる。
     パスワード:
     確認用パスワード: