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


Submitting a form using php, with email check via javascript

第一次发布海报,长期阅读,所以我会开门见山。

我正在为学校做一个项目,这个问题远远超出了项目的要求,但一旦完成,它就会看起来很棒。我有三段不合作的代码——一段html/php、一段php和javascript。

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

我测试了手动设置变量,它确实有效(通过emailsubmit.php代码),emailcheck.js代码确实检查了一封正确的电子邮件,它们之间没有正确地交谈。

你介意帮我一把吗?我已经做了大约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";
    ?>

您的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;

在这样做的过程中,当regexp得到正确验证时,您的表单将提交,并且页面将刷新,从而引发php代码。