2012-12-08 37 views
2

我想使登记输入字段只接受某些类型的电子邮件地址(例如,一个只接受与@yahoo.com结束电子邮件地址),这样我可以提供在一些安全谁可以访问我的网站的术语(例如,我想只接受那些来自我校,即学生的电子邮件地址,他们必须在@school.edu结束)。登录字段与特定输入

这里是我到目前为止,但这并不针对特定类型的电子邮件的区别:

<?php 

    // configuration 
    require("../includes/config.php"); 

    // if form was submitted 
    if ($_SERVER["REQUEST_METHOD"] == "POST") 
    { 
     // validate inputs 
     if (empty($_POST["username"])) 
     { 
      apologize("You must provide a username."); 
     } 
     else if (empty($_POST["password"])) 
     { 
      apologize("You must provide a password."); 
     } 
     else if (empty($_POST["confirmation"]) || $_POST["password"] != $_POST["confirmation"]) 
     { 
      apologize("Those passwords did not match."); 
     } 

     // try to register user 
     $results = query("INSERT INTO users (username, hash, cash) VALUES(?, ?, 10000.0000)", 
      $_POST["username"], crypt($_POST["password"]) 
     ); 
     if ($results === false) 
     { 
      apologize("That username appears to be taken."); 
     } 

     // get new user's ID 
     $rows = query("SELECT LAST_INSERT_ID() AS id"); 
     if ($rows === false) 
     { 
      apologize("Can't find your ID."); 
     } 
     $id = $rows[0]["id"]; 

     // log user in 
     $_SESSION["id"] = $id; 

     // redirect to portfolio 
     redirect("/"); 
    } 
    else 
    { 
     // else render form 
     render("register_form.php", ["title" => "Register"]); 
    } 

?> 

回答

0

您可以使用substr()功能与strrpos()相结合,以获得电子邮件的最后一部分:

if(substr($email, strrpos($email, "@")) == "@school.edu") { 
    //all good 
} 

一旦你这样做了,你可以通过电子邮件向他们发送确认链接,以确保它不是假的。

0

您也可以使用简单的正则表达式来验证用户的电子邮件

if(preg_match('#^(.*)\@school\.edu$#', $_POST['email'])) { 
    echo 'email is valid'; 
} else { 
    echo 'this is not valid email!'; 
}