2013-10-29 185 views
1

我有一个项目,我需要创建注册表单并将其插入数据库。注册表单(验证电子邮件)

我每次尝试注册时都会卡住,它会弹出一条消息,提示“请输入有效的电子邮件格式”。与电子邮件的正则表达式有关吗?

下面是代码

<?php 
    require_once('sqlconnect.inc.php'); 

    session_start(); 
    if (isset($_POST["Register"])) 
     { 
      $email = $_POST['email']; 
      $memberName = $_POST['membername']; 
      $passw = $_POST['password']; 
      $conPassw = $_POST['conpassword']; 

      if($email=='') 
      { 
      echo "<p>Please enter the Email address</p>"; 
      echo "<a href=\"signup.php\">Back to Registration Page!</a>"; 
      exit(); 
      } 

      if($memberName=='') 
      { 
      echo "<p>Please enter the Member Name</p>"; 
      echo "<a href=\"signup.php\">Back to Registration Page!</a>"; 
      exit(); 
      } 

      if($passw=='') 
      { 
      echo "<p>Please enter Password</p>"; 
      echo "<a href=\"signup.php\">Back to Registration Page!</a>"; 
      exit(); 
      } 

      if($conPassw=='') 
      { 
      echo "<p>Please enter Confirm Password</p>"; 
      echo "<a href=\"signup.php\">Back to Registration Page!</a>"; 
      exit(); 
      } 
      else { 

      $email = $_POST['email']; 
      $pattern = '/^[_A-z0-9-]+((\.|\+)[_A-z0-9-]+)*@[A-z0-9-]+(\.[A-z0-9-]+)*(\.[A-z]{2,4})$/'; 
      if (preg_match($pattern, $email)) 
      { 
       echo "<p>Please enter a valid email format<p>"; 
       } 
       else{ 
       $memberName = strtolower(trim($_POST['membername'])); 
       $_SESSION['name'] = $_POST['membername']; 
       $pattern1 = '/^[a-z][a-z ]*$/i'; 
       if (preg_match($pattern1, $memberName)) 
        { 
        echo "<p>Member name must contain only letters, space and hypen</p>"; 
        } 
        else{ 

        $pattern2 = '^[a-zA-Z0-9]+$'; 
        if (preg_match($pattern2, $passw)) 
         { 
         echo "<p>Password must only contain numbers and letters!</p>"; 
         } 
         else{ 

           if($passw<>$conPassw) 
           { 
            echo "<p>Passwords does not match!</p>"; 
            $passw=""; 
            $conPassw=""; 
           } 
           else{ 

           $conn = @mysqli_connect($host, $user, $pswd, $dbnm); 
           if (!$conn) 
           die ("<p>Couldn't connect to the server!<p>"); 
           $SelectDatabase = @mysqli_select_db($conn,"s7259476_db") 
           or die("<p>The database is not available.</p>"); 

            $insertDatabase = "INSERT INTO team VALUES('NULL','$email','$password','$memberName',CURDATE(),0)"; 
            $queryResult = @mysqli_query($conn, $insertDatabase) 
            or die ("<p>Email already exists.Please enter another email id</p>"); 
            echo"<p>Data entered into friends table successfully</p>"; 
            echo "<p>Welcome"." ".$_SESSION['name']."</p>"; 
           } 
          } 
         } 
        } 
       } 
      } 


?> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
"http://www.w3.org/TR/xhtml1/DTD/chtml-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en" > 
<head> 
    <meta http-equiv="content-type" content="text/html; charset=utf-8" /> 
    <meta name="description" content="Web Programming :: Assignment 2" /> 
    <meta name="Keywords" content="Web, programming" /> 
    <title>Register Page</title> 
</head> 

<body> 

<form id='register' action='signup.php' method='POST'> 
     <fieldset > 
      <legend><h1>My Team System Registration Page</h1></legend> 
      <?php $email = isset($_POST['email']) ? filter_var($_POST['email'], FILTER_SANITIZE_STRING) : ''; ?> 
      <?php $memberName = isset($_POST['membername']) ? filter_var($_POST['membername'], FILTER_SANITIZE_STRING) : ''; ?> 
      <div class="elements"> 
      <label for='email' >Email:</label> 
       <input type='text' name='email' id='email' maxlength="50" value="<?php echo $email; ?>" /> 
      </div> 
        <br /> 
      <div class="elements"> 
      <label for='membername' >Member Name:</label> 
       <input type='text' name='membername' id='membername' maxlength="50" value="<?php echo $memberName; ?>" /> 
      </div> 
        <br /> 
      <div class="elements"> 
      <label for='password' >Password:</label> 
       <input type='password' name='password' id='password' maxlength="50" /> 
      </div> 
        <br /> 
      <div class="elements"> 
      <label for='conpassword' >Confirm Password:</label> 
       <input type='password' name='conpassword' id='conpassword' maxlength="50" /> 
      </div> 
        <br /> 
      <div class="submit"> 
       <input type='submit' name='Register' value='Register' /> 
       <input type='reset' name='Submit' value='Clear' /> 
        <br /> 
      <div class="elements"> 
      <a href="Index.php">Home</a> 
     </fieldset> 
</form> 

</body> 
</html> 

回答

3

不要使用正则表达式验证电子邮件地址。 PHP有filter_var,这是快速和易于使用。电子邮件地址使用正则表达式进行正确验证非常痛苦(有一个正则表达式可以在某个地方正确地验证它们,而且它是巨大的!)。

filter_var验证的电子邮件地址可能是这样的一些典型代码:

if (!filter_var($email, FILTER_VALIDATE_EMAIL)) 
{ 
    echo "Invalid email address"; 
} 
+0

感谢马修!过滤var的电子邮件是更容易,会有类似的代码,我可以使用成员名称/用户名?发生了一个问题,并问我它的成员名称,它必须包含字母,空格,这再次与正则表达式的问题,我假设 –

+0

@TylerMatema我会使用正则表达式来验证用户名。然而,filter_var支持许多不同的过滤器,其中之一是FILTER_VALIDATE_REGEXP,所以你仍然可以使用filter_var或preg_match如你所愿 –

+0

@TylerMatema我的正则表达式有点生疏,但看着你的用户名正则表达式,如果你想只是允许字母和连字符,我认为/^[az - ] + $ /就是你在 –