2

特定の種類の電子メール アドレスのみを受け入れる登録入力フィールド (たとえば、で終わる電子メール アドレスのみを受け入れるもの@yahoo.com) を作成して、誰が私の Web サイトにアクセスできるかに関してある程度のセキュリティを提供できるようにしたいと考えています (例: 私私の学校の生徒からの電子メール アドレスのみを受け入れたい (つまり、末尾が ) である必要があり@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"]);
    }

?>
4

2 に答える 2

0

簡単な正規表現を使用してユーザーの電子メールを確認することもできます

if(preg_match('#^(.*)\@school\.edu$#', $_POST['email'])) {
    echo 'email is valid';
} else {
    echo 'this is not valid email!';
}
于 2012-12-08T14:18:57.293 に答える
0

substr()関数をstrrpos()と組み合わせて使用​​すると、電子メールの最後の部分を取得できます。

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

それが完了したら、提供された電子メールへの確認リンクを電子メールで送信して、偽の電子メールではないことを確認できます.

于 2012-12-08T14:09:46.670 に答える