2016-11-01 11 views
1

私はPHPを通して電子メールを検証しようとしています。私はPHPにはとても新しいので、事前に謝ります。電子メールの失敗の検証 - PHP

マイページがエラーなくロードされますが、間違った形式のメールでフォームを送信し続けることができます。私はページをリフレッシュして、メッセージをポップアップして、ユーザーに有効な電子メールアドレスを使用するよう促します。事前に

おかげ

<?php 
    session_start(); 

    require 'database.php'; 

    $message = ''; 

    if (isset($_POST['email']) == true && empty($_POST['email']) == false) { 
     $email = $_POST['email']; 

     if(filter_var($email, FILTER_VALIDATE_EMAIL) == true){ 
      echo 'That\'s a valid email address'; 
     } else { 
      echo'Not a valid email address'; 
     } 
    } 
    if(!empty($_POST['email']) && !empty($_POST['phonenumber']) && !empty($_POST['postcode']) && !empty($_POST['Name'])): 

     $stmt = $conn->prepare('SELECT email FROM noodles_gamification WHERE email = :email'); 
     $stmt->execute(array(':email' => $_POST['email'])); 
     $row = $stmt->fetch(PDO::FETCH_ASSOC); 

     if(!empty($row['email'])){ 
      $message = 'email provided is already in use.'; 
     } else { 

      $sql = "INSERT INTO noodles_gamification (email, phonenumber, postcode, Name) VALUES (:email, :phonenumber, :postcode, :Name)"; 
      $stmt = $conn->prepare($sql); 

      $stmt->bindParam(':email', $_POST['email']); 

      $stmt->bindParam(':phonenumber', $_POST['phonenumber']); 
      $stmt->bindParam(':postcode', $_POST['postcode']); 
      $stmt->bindParam(':Name', $_POST['Name']); 

      if($stmt->execute()){ 
       $_SESSION['email'] = $_POST['email']; 
       header("Location: ../"); 
      } 
     } 
    endif; 
?> 

<!DOCTYPE html> 
<html> 
<head> 
<title>Register</title> 
<link rel="stylesheet" stype="text/css" href="style.css"> 
<link href="https://fonts.googleapis.com/css?family=Comfortaa" rel="stylesheet"> 

</head> 

<body> 
<div class="header"> 
    <a href="../index.php"> Your App Name</a> 
</div> 

<?php if(!empty($message)): ?> 
    <p><?= $message ?></p> 
<?php endif; ?> 

<h1>Need a few details before you start the game</h1> 
    <form action="register.php" method="POST"> 
    <input type="text" placeholder="Enter Your Full Name" name="Name"> 
     <input type="text" placeholder="Enter Your Email" name="email"> 
     <input type="text" placeholder="Phone Number" name="phonenumber"> 
     <input type="text" placeholder="Post Code" name="postcode"> 

    <input type="submit"> 
</body> 
</html> 
+0

ヒント - 'SESSION' –

答えて

1

あなたは電子メール

if (isset($_POST['email']) == true && empty($_POST['email']) == false) { 
     $email = $_POST['email']; 
     if(filter_var($email, FILTER_VALIDATE_EMAIL) == true){ 
      echo 'That\'s a valid email address'; 

     } else { 
      echo'Not a valid email address'; 

     } 
    } 

しかし、それはあなたがメッセージを表示しているし、あなたのスクリプトが実行するためにさらに進んで、検証の後を検証し、このコードを書いています。一方、電子メールのエラーを表示した後で停止する必要があります。 emailErrorはその後、偽でさらに

if(!$emailError){ 
    //your code to save the data or manipulate the data 
} 
+0

それが役に立ったら、私のansを受け入れ、qusを閉じてください –

1

次のようになりますPHPでメールを確認するための簡単な方法、

if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { // invalid emailaddress }

を行くのであればチェック次に、この

$emailError=false; 
if (isset($_POST['email']) == true && empty($_POST['email']) == false) { 
     $email = $_POST['email']; 
     if(filter_var($email, FILTER_VALIDATE_EMAIL) == true){ 
      echo 'That\'s a valid email address'; 

     } else { 
      echo'Not a valid email address'; 
      $emailError=true; 

     } 
    } 

を使用あなたはリンクを参照することができますHow to validate an Email in PHP

ありがとうございます。

関連する問題