2011-12-19 98 views
1

我正在编辑基本上是新闻订阅表单的ASP表单。问题是,如果用户已经注册,我无法触发事件提醒我。检查电子邮件是否已添加到数据库中

我想找到一种方法来让表单检查用户的电子邮件地址是否存在于我的数据库中。如果是这样,那么就说:“你已经注册了,你没有收到谢谢你的电子邮件吗?点击这里再次收到邮件。”

现在,用户可以注册并自动获取谢谢表单,但不一定告知他们是否已经注册。

编辑:抱歉没有提到这一点,但这个数据库是使用微软的SQL Server进行管理的。是的,我正在使用此方法存储值。请让我知道,如果我可以包含任何更多的细节 - 我不是很熟悉数据库。

+0

你如何储存电子邮件? MySQL的? – 2011-12-19 18:21:54

+2

是的,您只需更新存储要先测试的电子邮件的代码,然后返回验证错误。我们需要更多详细信息,告诉你如何提供帮助。 (我可能会放弃“你没有收到谢谢你的电子邮件吗?” - 这听起来有点指责。) – Rup 2011-12-19 18:23:39

+0

运行一个查询来确定电子邮件是否存在之前做任何事情,如果存在然后显示消息,如果不是那么你的附加逻辑 – MethodMan 2011-12-19 18:24:00

回答

1
伪代码

bool alreadyRegistered = (ReturnIntegerFromDatabase("select count(*) from table where email=\"emailAddress\"") > 0) 
if(alreadyRegistered) 
    alert(); 
else 
    register(); 

我还要提到的,因为你不熟悉的数据库,你应该始终警惕SQL注入的,并采取措施加以预防。

+0

感谢您提供此答案。我不确定的一件事是如何编写实际的查询。这给了我很好的理解如何解决这个问题。非常感谢! – Hectron 2011-12-19 20:18:05

0

当然,有一个支持存储的地方(数据库?)注册保存;你可以简单地在注册时查询它,如果你找到它,就相应地采取行动。

如果没有有您存储的电子邮件地址的位置(即,您只需发送的电子邮件作为过程的一部分,然后将其丢弃),那么你就必须开始保存它们,以方便您描述的功能。

+0

我在想这个问题,但想到是否有更有效的方法来做到这一点。 – Hectron 2011-12-19 18:32:10

+0

嗯,我不知道它有多高效,如果您不保存电子邮件地址,那么您无法追踪它们。 – kprobst 2011-12-19 18:37:18

+0

我绝对同意这一点。我认为最好的方法是让一个字符串成为“查询”的基础,然后用“insert into”和“if exists”两个修改版本来相应地执行。 – Hectron 2011-12-19 18:42:14

1

那么我打算依靠艾萨克的方法。您仍然需要检索电子邮件地址(如果它已经存在),以便您可以向其发送警报,这可以为您节省另一次数据库访问。请看下面的方法存根:

public void EmailAlert(string email) { } 

public void Register(string email, ...) { } 

public string FindEmail(string email) 
{ 
    //query 
    SELECT *    
    FROM Table 
    WHERE Email = 'passed in email' 

    //pseudo code 
    if (email exists) 
    { 
     return email address; 
    } 
    return null; 
} //returns null if none found 

那么你的逻辑看起来像下面这样:

var email = FindEmail(givenEmail); 
if (email != null) 
{ 
    EmailAlert(email); 
} 
else 
{ 
    Register(email, ...); 
} 

如果你鄙视检查空,你可以子那件在任何适合你的风格。这实际上只是为了展示逻辑流程,而不是确切的实施细节。

+0

非常感谢您为流程逻辑的工作方式提供了一个很好的介绍。尽管我选择了另一个答案作为我的主要选择,但您的回答确实帮助我获得了更好的理解。 – Hectron 2011-12-19 20:17:21

相关问题