2012-12-08 2 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

당신은 이메일의 마지막 부분을 얻기 위해 strrpos()과 결합 substr() 기능을 사용할 수 있습니다 :

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!'; 
}