如何在Drupal注册表中抑制电子邮件的域名? -- users 领域 drupal 相关 的问题

How do I restrain domain names of e-mails in the Drupal registration form?


2
vote

问题

中文

在注册页面上,我只想通过一些选择(仅限于仅限于内部公司使用)的选择之间限制电子邮件地址的域通过选择列表。 用户在注册时,因此只需要在@符号之前编写字符;然后选择他使用的正确域名(例如yahoo.fr)。 drupal注册的电子邮件的最终值(在数据库中注册)应该是这样的:[user_entry] + [@] + [chosen_domain_name]。 我找到了一些函数验证电子邮件拼写,但我真的希望用户只有选择在显示的域名之间。

我读到了一些答案​​谈论 hook_form_user_login_alter() < / code>,但我仍然没有得到我如何制作它...

您的回复!

英文原文

On the registration page, I want to restrict the domain of the e-mail adress only between a few choices (to limit the use of the site to internal company use only) through a list of choices. The user, upon registration, would therefore only have to write the characters before the @ sign ; and then choose the correct domain name he uses (for instance yahoo.fr). The final value of the email registered by Drupal (and thus registered in the database) should be like this one: [User_entry]+[@]+[chosen_domain_name]. I found some functions to verify the e-mail spelling, but I really want users only to have the choice between shown domain names.

I've read some answers talking about hook_form_user_login_alter(), but I still don't get how I could make it...

Thks for your replies !

  

回答列表

3
 
vote
vote
最佳答案
 

我不确定您是否在PHP或自定义模块开发中有任何经验,但我没有时间给您工作示例。但是我会指出你的正确方向。

•创建自定义模块

•使用 hook_form_alter 更改表单ID user_registration

•在 hook_form_alter 中添加自定义验证功能并确保它是运行

的第一个验证功能

•在 hook_form_alter 取消设置 mail 元素,并为表单的两部分添加两个元素(文本输入和域的下拉列表)

•在您的自定义验证函数中,使用表单元素的提交值创建电子邮件地址并将其分配给您之前未设置的元素, 99887665

•确保在验证函数中,您不允许用户提交空白值

编辑以添加更新的答案

好的,好的,为花时间歉意。此代码未经测试,但应该为您想要做的事情工作。首先,尽量避免在主题层中做这样的事情。主题层仅适用于主题,因此您要创建自定义模块。 要创建模块,您需要创建 .info 文件。更改以下代码并将其粘贴到您的文本编辑器中,并将其另存为 example.info 。请记住,您可以将文件的名称更改为您的任何适合您的内容,只需将"示例" 替换为您想要提供的任何名称。请注意,Drupal故意省略关闭 ?> PHP标签。
  name = "Example module" description = "Gives an example of a module." core = 6.x package = Other   

下一个,您要保存一个名为 user_registration0 的文件。在此文件中,您需要复制以下代码。此代码遵循我以前的答案中给您的说明。我试图评论这个代码,以便尝试向您展示正在做的事情以及为什么。这应该做你想要的事情。

  user_registration1  
 

I'm not sure if you have any experience in PHP or custom module development but I don't have time to give you a working example. However I will point you in the right direction.

xe2x80xa2 Create a custom module

xe2x80xa2 Use hook_form_alter to alter the form with the form id user_registration

xe2x80xa2 In your hook_form_alter add a custom validation function and ensure it is the first validation function that runs

xe2x80xa2 In your hook_form_alter unset the mail element and add two elements for the two parts of your form (the text input and the dropdown list of domains)

xe2x80xa2 In your custom validation function, use the submitted values of your form elements to create an email address and assign it to the element you unset before, mail

xe2x80xa2 Make sure that in the validation function, you don't allow users to submit blank values

Edit for a fuller answer to be added

Ok, apologies for taking my time. This code is untested but should hopefully work for what you want to do. First of all, try to avoid doing things like this in the theme layer. The theme layer should be for themes only, so you want to create a custom module.

To create your module you need to create a .info file. Alter the following code and paste it into your text editor and save it as example.info. Remember that you can change the names of the files etc to whatever suits you, just replace the word "example" with whatever name you want to give it. Please note that Drupal deliberately omits the closing ?> PHP tag.

name = "Example module" description = "Gives an example of a module." core = 6.x package = Other 

Next, you want to save a file called example.module. Inside this file, you will want to copy the following code. This code follows the instructions that I gave you in my previous answer. I have tried to comment this code as well as possible in order to try to show you what is being done and why. This should do what you want it to do.

<?php  /**  * Implementation of hook_form_alter()  */ function example_form_alter(&$form, &$form_state, $form_id) {     // If the form is the user_register form     if ($form_id == 'user_register') {         // Attach our custom validation function as the first validation function         array_unshift($form['#validate'], '_example_user_validate');         // Hide the email address field         $form['mail']['#type'] = 'hidden';         // Give the email address field a random default value (in this case a random number and a timestamp)         // as we cannot unset it due to Drupal's validation rules         $form['mail']['#default_value'] = rand(1111, 9999) . '@' .time() . '.com';         // Add our new text entry field         $form['mail_first'] = array(       '#type' => 'textfield',       '#title' => t('Email address'),       '#default_value' => '',       '#size' => 60,       '#maxlength' => 64,       '#required' => TRUE,     );         // Add our select list of possible email domain values         $form['mail_last'] = array(       '#type' => 'select',       '#prefix' => '@',       '#options' => array(               // These are the possible email address domains               'yahoo.fr' => 'yahoo.fr',               'yahoo.com' => 'yahoo.com',               'example.com' => 'example.com',             ),       '#required' => TRUE,     );     } }  /**  * Function to piece together our email address  */ function _example_user_validate(&$form, &$form_state) {     // If our two form elements have values     if (!empty($form_state['values']['mail_first']) && !empty($form_state['values']['mail_last'])) {         // Set the email address to the correct value         $form_state['values']['mail'] = $form_state['values']['mail_first'] . '@' . $form_state['values']['mail_last'];     } } 
 
 
         
         
2
 
vote

这里是我写的,我认为这是充满了错误! O_O ^^

  user_registration2  

代码更新在05/28/11:

  user_registration3  
 

Here is what I wrote, I think it's full of errors ! O_O ^^

<?php      function tatheme_user_registration_form_alter (&$variables) {         if (!empty($variables['user']['mail'])) {             unset $variables['user']['mail'];         }         print '<input id="mailpart1" value="" class="'.$classes.'" type="text" /> @ <select id="mailpart2" name="mailpart2" class="'.$classes.'"><option value="dede.net">dede.net</option><option value="dede.com">dede.com</option>';          $syntax='#^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,6}$#';           $mail = $_POST['mailpart1']+"@"+$_POST['mailpart2'];          if (isset($_POST['mailpart1']) OR !$_POST['mailpart1']) {             return false;         }         else {               if (preg_match($syntax,$mail)) {                 return true;              }             else {                 return false;             }         }          $variables['user']['mail'] = $mail;     }     ?> 

CODE UPDATE AT 05/28/11 :

<?php  /**  * Implementation of hook_form_alter()  */ function ta_module_form_alter(&$form, &$form_state, $form_id) {     // If the form is the user_register form     if ($form_id == 'user_register_form') {         // Attach our custom validation function as the first validation function         array_unshift($form['#validate'], '_ta_module_user_validate');         // Hide the email address field         $form['account']['mail']['#type'] = 'hidden';         // Give the email address field a random default value (in this case a random number and a timestamp)         // as we cannot unset it due to Drupal's validation rules         $form['account']['mail']['#default_value'] = rand(1111, 9999) . '@' .time() . '.com';         // Add our new text entry field         $form['mail_first'] = array(       '#type' => 'textfield',       '#title' => t('Email address'),       '#default_value' => '',       '#size' => 40,       '#maxlength' => 64,       '#required' => TRUE,     );         // Add our select list of possible email domain values         $form['mail_last'] = array(       '#type' => 'select',       '#prefix' => '@',       '#options' => array(               // These are the possible email address domains               'blabla.net' => 'blabla.net',               'blabla.com' => 'blabla.com',             ),       '#default_value' => 'blabla.net',       '#required' => TRUE,     );     } }  /**  * Function to piece together our email address  */ function _ta_module_user_validate(&$form, &$form_state) {     // If our two form elements have values     if (!empty($form_state['values']['mail_first']) && !empty($form_state['values']['mail_last'])) {         // Set the email address to the correct value         $form_state['values']['mail']['edit-mail'] = $form_state['values']['mail_first'] . '@' . $form_state['values']['mail_last'];     } } 
 
 
   
   

相关问题

2  userpage主题  ( Theming the userpage ) 
我想用一些更改修改userpages: 更改页面标题 隐藏一些或全部本地TAKS项目(标签) 显示一些用户信息 插入视图 这里是我如何解决它: 使用 tomename_preprocess_page()改变标题 使用 tomene_menu_local_task()隐藏标签 使用用户配置文件。 tpl.php ...

2  跟踪用户联系表单提交  ( Tracking user contact form submissions ) 
如何在Drupal 6上跟踪用户联系表单提交? 我正在考虑类似于webform结果表的东西,但是对于用户联系表单。 如果不是那种复杂的东西,那么只有关于触点表单的简单统计数据,例如, "Userx本月收到了10封电子邮件。" 我很确定我必须创建自己的模块,这很好,我只需要知道如何走这个问题。 你有什么想法吗? ...

2  在注册表中启用密码并确认密码字段  ( Enable password and confirm password fields in registration form ) 
我想在我的Drupal网站中有注册表单,但这仅限于电子邮件和用户名。 我还希望在注册表中拥有字段"密码" 和"确认密码" ,以便用户无需查看他的电子邮件以获取密码,并可以在注册后直接登录网站。 如何实现这一目标? ...

5  由于LocalHost循环,登录失败。任何想法为什么?  ( Login fails due to loop on localhost any ideas why ) 
我有git克隆了一个站点并使用备份并迁移到将数据库带到本地主机上。 在远程主机上工作登录工作正常。不是在本地。我不再工作了大约一个小时我会说。 Firefox已检测到服务器以永不完整的方式重定向此地址的请求。 我已经清除了所有历史,尝试了不同的浏览器,并几次重新启动Apache。 任何想法? 编辑: 我可以安装...

1  取消订阅时事通讯  ( Unsubscribe newsletter ) 
我在Drupal项目中实现了"simpleNews_register" 模块。因此,每当用户想要在本网站注册时,他必须输入他的用户名,电子邮件地址,密码,并同时他想订阅任何现有的新闻通讯,然后他选中相关的时事通讯复选框。然后,自动用户将收到有关订阅链接的一封邮件。所以,他想订阅,然后他会点击该链接。 在这里,我的要求...

9  迁移后我无法登录  ( I cannot log into after migration ) 
我搜索了数百个解决方案并实现了所有的东西。我也搜索了这个网站,以便找到同样的问题,但我无法找到它。 我有一个开发网站和生产网站。迁移到两者之间,我使用github推动和拉动。这在过去不是一个问题,但是,我多次遇到这个问题。文件迁移Drupal不再允许我登录后。我尝试登录凭据并立即收到访问拒绝页面。 我的网站cooki...

2  “用户帐户”菜单链接未显示给匿名用户  ( User account menu link does not show to anonymous users ) 
当用户登录用户菜单时,显示"我的帐户" 链接和"注销" 链接。但是,在注销菜单时会消失。 如何使菜单链接到仅显示用户菜单中的匿名用户的用户登录页面? 如果trey将他的评论发布为答案,我会检查它。自从我使用上下文,我已经禁用了块模块。我创建了一个由匿名用户角色触发的第二个站点上下文,并将菜单块放在用户区域中的登录页...

1  导出具有自定义字段的用户?  ( Export users with custom fields ) 
我需要设置在我们网站上注册的人的半正常导出。我们正在使用Drupal 7.我可以做一个简单的用户表导出,但这不包括我们添加的附加自定义字段。 在D7中有一个模块,请使用与这些记录关联的自定义字段一起处理将用户数据库导出? 如果没有,是否有一个简单的查询我可以做到识别运行时在注册过程关联的自定义字段?如果我的客户决定添...

2  将用户从身份验证URL重定向到注册页面  ( Redirect users from authentication urls to signup page ) 
我正在使用drupal 6。 如果用户是匿名用户,我想重定向用户/用户/登录,/用户/寄存器,/用户/注册/注册。此页面将显示登录名和寄存器表单。 唯一的页面将是/用户/密码,我不想在/注册的形式。 我很熟悉PHP,但我不确定我应该用它来实现哪些钩子。 ps。我已经知道如何自己打印这些表格。我的怀疑是关于网址。 ...

0  内容配置文件标题令牌  ( Content profile title token ) 
我需要一个内容配置文件标题令牌。我下载了这个小模块,但它仅适用于text_field,我需要一个标题。 ...

4  在用户面板中显示用户头像  ( Display the user avatar in a user panel ) 
是有替代方案制作登录框,该登录框进入默认用户面板(我的帐户,管理等)显示用户名上方的用户的个人资料图片? ...

4  是否有更好的方法来使用视图制作用户配置文件选项卡?  ( Is there a better way to make a user profile tab using a view ) 
我已经使用cck创建了一个问题节点类型,并希望显示用户在其个人资料页面上的选项卡上创建的所有问题。 我所做的方式感觉有点间接。我有: 创建了一个列出了所有用户问题的视图,并拨打了一个块以显示它。 配置了块,使其仅在右路("用户/ * /疑问" )上显示。 在此路径中创建了Hook_Menu的条目。使用页面回调,调用...

1  从外部应用程序登录Drupal  ( Logging into drupal from an external application ) 
我目前正在使用服务模块和一些自定义代码删除,登录和编辑drupal用户外部应用程序。我当前可以在外部应用程序上作为用户登录,但我只是在代码中登录而不是实际浏览器。这意味着我可以在代码中使用经过身份验证的帐户执行操作,但当我通过浏览器访问我的Drupal网站时,我尚未登录。我希望我的用户在登录我的外部应用程序时登录dr...

6  限制Drupal中自定义模块的权限  ( Restrict permission to custom modules in drupal ) 
我正在使用drupal 6,我创建了一个自定义模块。该模块由一种形式组成,可用于将记录添加到数据库。 但我看到所有用户,均匀的用户都可以访问此表单的链接( 998876661 )。 我想限制对此模块的访问,并从所有普通用户中形成。我只想要管理员访问它。 我已经创建了一个名为Administrator的角色,并仅为管理...

3  在视图中创建UserList(包括自定义用户字段)  ( Creating a userlist in views including custom user fields ) 
我已经在Drupal 7中使用视图3遇到了一个问题。 我想创建一个用户列表,其中一堆我添加到用户配置文件的字段(使用drupal的核心用户字段)。我需要一个所有用户的列表,现在我一直在获取当前创建的内容及其作者(使用相应的用户字段)。并非所有用户都创建了内容。 我创建了一个关系"内容:作者" 以访问自定义用户字段,但...

4  成功登录后如何关闭登录窗口  ( How to close login popup after successful login ) 
我正在开发FF扩展,它显示第三方网站的特定于用户的信息。用户需要登录我的Drupal-网站。我正在使用跨域证明 jQuery.ajax() 检查登录状态。如果用户未登录,则FF-extension会打开一个弹出窗口( window.open() ),显示Drupal登录/寄存器/ passwordlost页面(/用户...

1  关于用户电子邮件激活的问题  ( Question about user email activation ) 
我注意到用户表有一个列的列。 1状态是否意味着帐户已激活电子邮件?这是区分激活的帐户和未经alvateated帐户的唯一方法吗?此外,我想制作一个模块,当用户电子邮件激活他的帐户时会做某事。我猜这将是用户钩子,但是什么op代码我将用什么何时何时激活他的帐户? ...

2  如何在Drupal 7中创建2个或更多不同的注册页面  ( How to create 2 or more different registration pages in drupal 7 ) 
我正在尝试创建(在此,我的第一个项目)2用户注册页面,一个免费,另一个可能是通过Ubercart注册的"付费" 订阅。我正在使用autoassignrole,profile2,视图,角色。 我相信它真的很容易,但我似乎在圈子里走来走去,没有得到任何地方。也许我看不到'树'的'逻辑'。 Drupal论坛缺乏任何具体答案...

2  如何在位置模块中更改国家下拉列表?  ( How to alter country dropdown in location module ) 
我一直在研究一种方法来限制可用的国家在贡献的位置模块附带的下拉。我认为 hook_form_alter() 是处理某些国家的方法,但是从手中启动 hook_form_alter() 片段不是我有能力实现的东西。经过大量谷歌曲,我无法找到代码片段让我开始。 我现在正在工作的项目只允许来自美国和加拿大的注册,所以我希望将...

1  如何使用Profiles2模块进行Drupal  ( How to use the profiles2 module for drupal ) 
我想使用for for drupal 7模块来创建与用户帐户分开的用户配置文件。 我正试图找出用于编辑用Profiles2模块创建的用户配置文件的URL是什么?例如: http://www.example.com/url-for-profile-editing-page 以及我必须修改的模板文件是什...




© 2021 it.wenda123.org All Rights Reserved. 问答之家 版权所有


Licensed under cc by-sa 3.0 with attribution required.