基于令牌邮件操作的邮件验证

时间:2010-08-23 03:31:21

标签: drupal action token verification

早上好,我创建了一个新的内容类型 - 请愿,最后一步必须通过向他们发送证明或从请愿中删除它们的链接来验证他们的邮件地址。

我需要获得某种独特的链接,然后我将其作为标记化的动作邮件发送到表单中提供的邮件帐户。然后,标记化链接应设置其邮件地址有效,并且也应该能够取消发布该帖子。

我在这里有点绝望,总体方向表示赞赏。

1 个答案:

答案 0 :(得分:1)

以下是有关如何更改节点内容以及如何在创建节点时发送邮件的示例(但您也可以在填写表单时发送邮件)。您应该能够使其适应您的设置。

创建节点,默认情况下不发布。在这里,当有人点击邮件中的链接时,我会将节点设置为已发布。

创建一个与nodeapi对话的自定义模块:

function module_nodeapi($node, $op, $a3 = NULL, $a4 = NULL){

    if($node->type == 'petition'){
        switch ($op) {
            case 'submit':

            case 'insert':
                 $mail = $user->mail;
                 $nodeid = $node->nid;
                     // mail the user using the drupal_send_mail() function
                     // make the link something like: http://web.be/petition/validate/$nodeid/$mail
                     // drupal_set_message('thank you for validating the petition');
            case 'update':
            break;
        }
    }

所以链接的一个例子是http://web.be/petition/validate/20/test@test.com。接下来要做的是使用hook_menu获取链接及其变量(也在您的自定义模块中):

function module_menu(){
    $items['petition/valid/%/%'] = array(
        'title' => 'Validated your petition-entry',
        'page callback' => 'module_validate_petition',
        'page arguments' => array(1,2),
        'access arguments' => array('access content'),
        'type' => MENU_CALLBACK,
    );
}

function module_validate_petition($nid, $mail){
    // load the node
    $node = node_load($nid);
    // set to published
    $node->status = 1;
    // save the node
    node_save($node);
}