2011-08-25 69 views
2

我想他们创造自己的帐户后,用户转发到特定的页面,但是当他们到达那里,他们没有登录。实施hook_user_insert不登录我的用户

function mymodule_user_insert(&$edit, $account, $category) { 
    drupal_goto("node/3"); 
} 

我应该添加一些内容以确保用户在创建账户后才能登录?

回答

0

这是不这样做的地方,因为这应该只用于发布自定义添加到数据库中,see the documentation here

做到这一点是使用作为已经尝试和测试,并做了你所追求的登录目的地模块的最简单方法。要看他们是如何做的,就先看看源头。

http://drupal.org/project/login_destination

或者您应将代码添加到hook_user_login

+0

不幸的是,仅检查登录不*登记* :( –

+0

相信的Drupal 7版本会注册并注销 –

2

hook_user_insert()用户帐户被插入到数据库中的表,这将发生后调用时管理员的用户之一从创建用户帐户管理页面,或者当模块以编程方式创建用户帐户时。
挂钩的目的是保存模块与用户帐户关联的自定义数据。在这种情况下调用drupal_goto()是错误的。

要在注册后重定向用户,您可以实现类似于以下的代码。 (“MyModule的”仅仅是一个模块短名称的例子;其更改为你使用/创建模块的简称。)

function mymodule_form_ user_register_form_alter(&$form, &$form_state) { 
    // Add a form submission handler to the registration form. 
    $form['#submit'][] = 'mymodule_user_register_submit'; 
} 

function mymodule_user_register_submit($form, &$form_state) { 
    $form_state['redirect'] = 'where you want to redirect the user'; 
} 

考虑到执行该代码时,用户仍然需要登录和(根据网站设置),他们可能需要首先接收Drupal发送给用户的电子邮件,当它设置为首先验证注册用户报告的电子邮件地址时。

如果你想重定向用户登录后,你应该实现hook_user_login(),但用户需要首先登录。