用于检查是否正在使用电子邮件的PHP表单

时间:2011-02-17 01:18:50

标签: php

我有一个简单的形式:

<fieldset id="membershipform"> 

                        <ul class="clearfix"> 
                            <li id="li-status"> 
                                <span>I am a:</span> 
                                <menu> 
                                    <li><label for="student"><input disabled="disabled" type="radio" name="r1" id="student" checked="checked" /> Graduate</label></li> 
                                    <li><label for="student2"><input disabled="disabled" type="radio" name="r1" id="student2" /> Undergraduate</label></li> 
                                </menu> 
                            </li> 
                            <li id="li-firstname"> 
                                <label for="firstname">First Name</label> <input disabled="disabled" type="text" placeholder="First Name" id="firstname" title="First Name" /> 
                            </li> 
                            <li id="li-lastname"> 
                                <label for="lastname">Last Name</label> <input disabled="disabled" type="text" placeholder="Last Name" id="lastname" title="Last Name" /> 
                            </li> 
                            <li id="li-email"> 
                                <label for="email">Email address</label> <input disabled="disabled" type="text" placeholder="Email address" id="email" title="Email address" /> 
                            </li> 
                            <li id="li-buttons"> 
                                <input type="submit" value="Send Application &#9658;" title="Send Application" /> 
                            </li> 
                        </ui> 

                    </fieldset>

我想要做的是将表单的内容发布到我的数据库中的表中,但如果电子邮件地址仅存在于数据库中,我希望它发出错误,说“已经在使用电子邮件”以防止来自申请的同一用户。

由于

编辑:澄清我的问题,正如一些人在下面评论说他们不确定我在问什么。我正在寻找一些示例,说明如何检查正在发布的表中的电子邮件地址是否已经存在,因此会引发错误。希望有道理。再次感谢。

2 个答案:

答案 0 :(得分:3)

你可以这样做:

function email_exists($email) 
{    
    $sql = mysql_db_query("SELECT email FROM table WHERE email = '" . $email . "'");

    return(mysql_num_rows($sql)>0);
}

if(!email_exists($_GET['email'))
{
    // insert database code here
}

答案 1 :(得分:2)

一般来说,这里有两个简单的选择。第一种是使用SELECT对数据库进行简单检查,以查看返回的结果数量。如果&gt; = 1,则电子邮件退出。另一种选择是在数据库中抛出一个请求,因为它可以更容易地发出单个请求并读取茶叶而不是多次执行请求,尽管在尝试插入新行之前会选择查看电子邮件是否存在

无论如何,您要做的是在MySQL数据库的电子邮件列中创建唯一索引。这应该照顾它 - 它会在执行任何SELECT时加快您对电子邮件的搜索,并且会导致任何重复的INSERT失败。因为尝试插入重复电子邮件地址的任何查询都将失败,您可以监视PHP端的这些故障并假设在正确的数据返回时存在电子邮件。

这是MySQL CREATE INDEX命令的a link。它应该像运行这样的命令一样简单:CREATE UNIQUE INDEX email_index ON email;