2016-11-01 3 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

고맙습니다.