ユーザー登録のファイルができました。
ファイルはふたつになっていて、ひとつは情報入力画面です。
このように空白のまま登録しようとすると、入力を促すメッセージがでます。
これはtextboxにrequirdをいれたからです。
echo '<input type="text" name="name" required class="button">';
入力されたユーザー情報を受け取る登録ファイルでも、念のため入力の有無をチェックしています。
if(empty($_POST['name'])){ echo 'お名前が未入力です<br>'; echo '<a href="customer-input.php">登録画面へ</a>'; exit; }else{ $name = $_POST['name']; }
ifで入力がなかった場合にexitを使いました。
最初、returnを使っていたのですが、どうも本来の使い方ではないようなのでexitに変えました。
$passpattern = "/^[0-9A-Za-z_.-]{8,}+$/"; $mailpattern = "/^[a-zA-Z0-9_.+-]+[@][a-zA-Z0-9.-]+$/";
つぎはメールとパスワードの確認です。
ここでpreg_matchで入力文字をチェックしていますが、preg_matchが難しいのでごく簡単にしました。
メールは@がふくまれているかどうかの判定、パスワードは半角英数で8文字以上にしました。
$sql= "insert into customer(name, address, mail, password) values(:name, :address, :mail, :password)"; $stmt = $pdo->prepare($sql); $stmt->bindValue(':name', $name, PDO::PARAM_STR); $stmt->bindValue(':address', $address, PDO::PARAM_STR); $stmt->bindValue(':mail', $mail, PDO::PARAM_STR); $stmt->bindValue(':password', $password, PDO::PARAM_STR); $stmt->execute();
あとは前回投稿したinsert intoで登録します。
以下追記です。
このままでは同じデータを重複登録してしまうので、同じpasswordだけは登録できないようにしました。
$sql = "SELECT * FROM customer WHERE password = :password"; $stmt = $pdo->prepare($sql); $stmt->bindValue(':password', $password, PDO::PARAM_STR); $stmt->execute(); if($stmt->fetchAll()){ echo 'このpasswordは登録済みです。'; echo '<br>'; echo "<a href=customer-input.php>登録画面へ</a>\n"; exit; };