前提・実現したいこと
メールアドレスとパスワードを入力し登録ボタンを押すと、入力された値に問題ないか確認し、問題なければ「登録完了」、それ以外はエラーメッセージを表示するページを作成しております。
尚、パスワードの文字数制限があり、6文字以上20文字以内で入力する必要があり
また、「未入力」と「入力はあるが値に問題がある」はそれぞれ異なるエラーメッセージを用意し表示する必要があります。
発生している問題・エラーメッセージ
①パスワードの問題
正規表現を用いて、6文字以上20文字以内で入力をしたのですが、
6文字以上を入力しても「パスワードは6文字以上20文字以内で入力してください」と
作成したエラーメッセージが表示されてしまいます。
②登録後の問題
正しく入力していた場合、画面が入力フォームではなく「登録完了」のみを表示させたいです。
該当のソースコード
PHP
1<?php 2$message = NULL; 3 4if($_SERVER['REQUEST_METHOD'] === 'POST') { 5 $mail = $_POST['mail']; 6 $pw = $_POST['pw']; 7 if (mb_strlen($mail) === 0){ 8 $message = 'メールアドレスを入力してください'; 9 } else if (preg_match('/^([a-zA-Z0-9])+([a-zA-Z0-9._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9._-]+)+$/', $mail) !== 1){ 10 $message = 'メールアドレスの形式が正しくありません'; 11 } else if(mb_strlen($pw) === 0){ 12 $message = 'パスワードを入力してください'; 13 } else if(preg_match('/^[a-z][a-z0-9_]{5,19}$/i', $pw)){ 14 $message = 'パスワードは6文字以上20文字以内で入力してください'; 15 } else{ 16 $message = '登録完了'; 17 } 18} 19 20?>
HTML
1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4<meta charset="UTF-8"> 5 <title>課題中級</title> 6</head> 7<body> 8 <form method="post"> 9 <p><label for="mail">メールアドレス<br/> 10 <input type="text" name="mail" id="mail"></label></p> 11 <p><label for="pw">パスワード<br/> 12 <input type="password" name="pw" id="pw"></label></p> 13 <p><input type="submit" name="登録"></p> 14 </form> 15<?php if($message !== NULL){ ?> 16 <?php print $message; ?> 17<?php } ?> 18</body> 19</html>
試したこと
パスワードに関しましては正規表現ではなく、単純に$limit = (6 <= 20);とグローバル変数で用いて
それを比較するような形で書いてみたのですが、同様な事象となりました。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/03/15 00:40