Php 使用特定输入登录字段

Php 使用特定输入登录字段,php,web,preg-match,string-matching,Php,Web,Preg Match,String Matching,我想创建一个只接受特定类型电子邮件地址的注册输入字段(例如,只接受以@yahoo.com结尾的电子邮件地址),这样我就可以在谁可以访问我的网站方面提供一些安全性(例如,我只想接受来自我学校的学生的电子邮件地址,即必须以@school.edu结尾) 以下是我到目前为止得到的信息,但这并不区分特定类型的电子邮件: <?php // configuration require("../includes/config.php"); // if form was sub

我想创建一个只接受特定类型电子邮件地址的注册输入字段(例如,只接受以
@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"]);
    }

?>
您可以将此功能与结合使用以获取电子邮件的最后一部分:

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

完成后,您可以通过电子邮件向他们发送所提供电子邮件的确认链接,以确保它不是伪造的。

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

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