2011-08-04 65 views
0

我在一個小的drupal 6站點中使用通知模塊,並希望能夠根據用戶的電子郵件地址字段的值向用戶發送短信或電子郵件。如何評估用戶在Drupal站點的電子郵件地址?

我可以訪問一個網關,所以我所要做的就是在手機號碼的末尾添加一個「@」和網關地址。

所以,我想告訴顧客輸入他們的手機號碼或地址,但有一個腳本來評估該字段中的內容。基本上,如果已經有一個「@」(意思是他們輸入了他們的電子郵件地址),則該值不會被改變。但是如果沒有「@」並且該值是10位數字(電話號碼),則自動添加「@gatewayaddress」。

我可以通過preg_match找出PHP來做到這一點,但是如何在創建帳戶時獲取字段的值?

我發現定製用戶註冊信息,但我想我應該寫一個簡單的模塊來做到這一點,以確保這是更容易維護的道路。

我沒有使用drupal的sms框架和網關模塊,因爲文本消息沒有被髮送,而嘗試模塊的開發版本仍然不起作用,並且破壞了我的網站。此外,我正在使用的這個網關免費提供給我的僱主,最重要的是,它只是起作用。

有人可以幫我解決這個問題嗎?


@nmc謝謝。我是模塊開發的新手,但我真的需要這個功能。

以下是我的模塊的功能,它不工作。我如何走上正確的道路?

function emailsmsfield_user($op,&$edit,&$account,$category = NULL) { 
    //if creating an account or updating 
     if($op == 'insert' || $op == 'after_update') { 
     /*checking for '@' symbol. If it is missing, the value gets the gateway address 
     added to the end*/ 
     if(preg_match('[^@]',$user->mail[0]['value'])) { 
$user->mail[0]['value'] = $user->mail[0]['value'] . 'gateway.address.com'; 
    } 
} 
} 
+0

你使用的是什麼版本的drupal? – nmc

+0

我正在使用drupal 6 – Matt

回答

1

這是用來驗證郵件

preg_match("/^[^@]*@[^@]*\.[^@]*$/", $email_address) 
+2

其實,[this](http://www.ex-parrot.com/pdw/Mail-RFC822-Address.html)是用於驗證電子郵件的正則表達式。 – ceejayoz

0

您可以使用hook_user功能來檢查並改變用戶的電子郵件字段,以便您可以相應地更新它的正規表示法。

如果要更改表單字段以便保留它們,請記住使用form_set_value

您甚至可能有興趣使用Drupal中內置的valid_email_address函數來檢查是否有東西是電子郵件地址。

是的,你將不得不把所有這些定製在你自己的小模塊。

+0

我應該使用'insert'還是'submit'作爲$ op的參數? – Matt

+0

我會嘗試'提交'或'驗證' – nmc

相關問題