2011-12-19 169 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

相關問題