使用php提交表单,通过javascript进行电子邮件检查

时间:2014-04-17 03:30:19

标签: javascript php jquery mysql ajax

第一次发布海报,长时间阅读,所以我会明白这一点。

我正在为一所学校的项目工作,这个问题远远超出了项目的要求,但一旦完成,它就会显得很棒。我有3段不合作的代码 - 一段html / php,一段php和javascript。

我的代码的最终目标是: 这是表格,提交您的电子邮件,如果它是@ trnty.edu地址(我的学校),请提交表格。 目前的问题是表单提交空白数据 - 证明我的SQL服务器上有许多空行。

我已经测试了手动设置变量,它确实有效(通过emailsubmit.php代码),emailcheck.js代码确实检查了一个正确的电子邮件,他们没有&#39正确地互相交谈。

你会介意帮我一把吗?我已经通过谷歌搜索这个(和其他)网站大约3周了,寻找可能的解决方案。非常感谢! (我的主页上的表格代码)

    <div id="signupform">
    <form id="signup" action="scripts/emailsubmit.php" method="POST">
        <input type="email" name="email" placeholder="school email address" />
            <button id="sub">Submit</button>
    </form>

我目前的Javascript - 我不知道填写空白的内容是什么或如何...

$(function(){
$('#signup').submit(function() 
    {
        if(validateEmail($('input').val()))
            {
                return true;
            }
        else
        {
                return false;
        }
});

    function validateEmail(email)
    {
    var re = /^\s*[\w\-\+_]+(\.[\w\-\+_]+)*\@[\w\-\+_]+\.[\w\-\+_]+(\.[\w\-\+_]+)*\s*$/;
    if (re.test(email)) 
        {
            if (email.indexOf('@trnty.edu', email.length - '@trnty.edu'.length) !== -1) 
                {
                    //alert('Submission was successful.'); //if true, submit form -- see video
                    return true;
                }
                 else 
                    {
                        alert('Email must be a Trinity email address (your.name@trnty.edu).');
                       return false;
                    }
        } 
        else {alert('Not a valid e-mail address.');}
    }


    });

Myphp代码。

    <?php
    $dbhost = 'localhost';
    $dbuser = 'service';
    $dbpass = '!@#$%';
    $db = 'tbv_main';
    $con = mysqli_connect($dbhost,$dbuser,$dbpass,$db);

    //$email = $_POST['email'];
    //$email = 'itworked@kickass.net';
    $sql = "INSERT INTO stage1 (email, counter) VALUES ('$email', NULL)";

    if (!mysqli_query($con,$sql))
        {
            die('Error: ' . mysqli_error($con));
        }
    echo "Email: $email , 1 record added";
    ?>

1 个答案:

答案 0 :(得分:1)

您的jQuery .submit()正在取消使用return false;的默认表单提交,但是没有ajax将数据发送到服务器,因此您实际要做的是在否定警报后返回false,并且在regexp通过时返回true,然后在提交函数中检查它。

$('#signup').submit(function() {
    if(validateEmail($('input').val())){
        return true;
    }else{
        return false;
    }
});

然后在验证功能中。

var re = /^\s*[\w\-\+_]+(\.[\w\-\+_]+)*\@[\w\-\+_]+\.[\w\-\+_]+(\.[\w\-\+_]+)*\s*$/;
if (re.test(email)) {
    if (email.indexOf('@trnty.edu', email.length - '@trnty.edu'.length) !== -1) 
        {
            //alert('Submission was successful.'); //if true, submit form -- see video
            return true;
        }
     else {
        alert('Email must be a Trinity email address (your.name@trnty.edu).');
        return false;
    }
} else {
    alert('Not a valid e-mail address.');
    return false;
}
return false;

这样,当正确验证正则表达式并且页面将刷新导致您的PHP代码触发时,您的表单将会提交。