パスワードリセットの画面を作成しており、行き詰ったので、ご教授いただけないでしょうか?
今回、メール認証の画面を作成することは出来たのですが、ソースコードの「のmemberテーブルにすでに登録されているmailかどうかをチェックする。」の箇所を、データーベースに登録がなれば、tureと返したいのですが、こちらに関してのヒントを教えていただけないでしょうか?
下記のソースだとデータベースにメールアドレスがあれば、「このメールアドレスはすでに利用されております。」とエラーを返し、メールが送信できない状態です。
メール送信する際に、DBをチェックし、
今回これを、「このメールアドレスはデーターベースに登録されていません。」
if(empty($_POST)) { header("Location: registration_mail_form.php"); exit(); }else{ //POSTされたデータを変数に入れる $mail = isset($_POST['mail']) ? $_POST['mail'] : NULL; //メール入力判定 if ($mail == ''){ $errors['mail'] = "メールが入力されていません。"; }else{ if(!preg_match("/^([a-zA-Z0-9])+([a-zA-Z0-9._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9._-]+)+$/", $mail)){ $errors['mail_check'] = "メールアドレスの形式が正しくありません。"; }else{ // ここで本登録用のmemberテーブルにすでに登録されているmailかどうかをチェックする。 $statement = $dbh->prepare("SELECT id FROM member WHERE mail=(:mail)"); $statement->bindValue(':mail', $mail, PDO::PARAM_STR); $statement->execute(); if($row = $statement->fetch()){ $errors['member_check'] = "このメールアドレスはすでに利用されております。"; } } } }
たぶん、この部分を
if($row = $statement->fetch()){ $errors['member_check'] = "このメールアドレスはすでに利用されております。"; }
参考にしたいサイトのコード
function checkUser($mail) { global $db; $query = mysqli_query($db, "SELECT id FROM member WHERE mail = '$mail'"); if(mysqli_num_rows($query) > 0) { return 'true'; }else { return 'false'; } } function UserID($mail) { global $db; $query = mysqli_query($db, "SELECT id FROM member WHERE mail = '$mail'"); $row = mysqli_fetch_assoc($query); return $row['id']; }
こちらを参考に試しましたが、ページが表示されません。
どうかご教授お願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/07/31 05:41