退職後の趣味の鉛筆画とはじめてのPHP

鉛筆画、PHPなどの備忘録です。

PHPで野菜のデータベースをつくる ユーザー登録ファイル

ユーザー登録のファイルができました。
ファイルはふたつになっていて、ひとつは情報入力画面です。

このように空白のまま登録しようとすると、入力を促すメッセージがでます。

これは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;
};