Benutzerregistrierungsmodul für Drupal

22

Drupal verwendet E-Mails zum Zwecke der Benutzerregistrierung. Anstelle der sofort einsatzbereiten Drupal-Benutzerregistrierung, bei der der Benutzer einen Benutzernamen und eine E-Mail-Adresse angeben muss, möchte ich ein vollständiges Benutzerregistrierungsformular (mit Captcha, Benutzerprofil usw., wie Yahoo oder Google Mail-Registrierung) für meine Website.

Gibt es ein Modul, das das macht?

Graviton
quelle

Antworten:

24

Hierfür gibt es mehrere Möglichkeiten.

Um Profilfelder zu erhalten, ist das in Drupal Core enthaltene Profilmodul die häufigste Lösung. Gehen Sie zu Administer > Site building > Modulesund aktivieren Sie es unter core-optional. Anschließend können Sie das Profilmodul konfigurieren Administer > User settings > Profileund in den Einstellungen festlegen, ob die Felder bei der Registrierung angezeigt werden sollen oder nicht.

Um ein Captcha während der Registrierung zu erhalten, benötigen Sie eines von mehreren Modulen:

Ich bevorzuge Mollom, weil es sehr gut funktioniert, ohne ärgerlich zu sein, aber es sendet Ihren Inhalt an eine externe Site, um eine Überprüfung durchzuführen.

Es gibt auch Captcha, das weniger zuverlässig ist als Mollom, aber den Inhalt auf Ihrer Website behält.

gregelt
quelle
Die Verwendung des Inhaltsprofilmoduls ist eine bessere Wahl als das Standardprofilmodul. Das Inhaltsprofil erstellt Knoten.
eddy147
2
Blech. Nicht wirklich. Inhaltsprofil ist eine Menge Aufwand. Wenn das Kernprofil gut für die Bedürfnisse des Benutzers geeignet ist (was in diesem Fall der Fall ist), ist es viel einfacher als das Inhaltsprofil. "Inhaltsprofil erstellt Knoten", aber Knoten sind nicht immer besser!
greggles
10

Die typische Wahl hierfür ist die Verwendung einer Kombination aus content_profile , um das Benutzerprofil als Knoten zu erstellen, content_profile_registration , eine Komponente von content_profile, um ein solches Profil bei der Registrierung unter Verwendung eines solchen vollwertigen Knotenbearbeitungsformulars zu erstellen, und möglicherweise auto_assign_role, wenn Sie dies wünschen Es gibt mehrere Benutzertypen mit unterschiedlichen Profiltypen.

Für den Captcha-Teil ist Mollom ein interessanter Dienst, wie Greggles vorschlug, aber Sie sollten auch reCaptcha in Betracht ziehen , das sich auch als öffentlicher Dienst eignet .

FGM
quelle
7

Es scheint, dass der empfohlene Prozess jetzt das Erstellen von Feldern ist. Von der Drupal- Site:

Das Profilmodul ist in Drupal 7 veraltet. Es wird nur verwendet, um einen Upgrade-Pfad für Drupal 6-Sites bereitzustellen, die es verwendet haben. In Drupal 7 wird die Verwendung des Profil2-Moduls oder das Erstellen von Feldern direkt auf der Benutzerentität empfohlen.

Tony
quelle
1

ReCaptcha sicher.

Sie können auch die einfachen Kernprofilfelder in der Registrierung anzeigen lassen, wenn Sie schlank bleiben möchten. Allerdings müssen Sie häufig user_profile.tpl.php thematisieren, wenn Sie diese Seite öffentlich haben möchten.

PS: Das E-Mail-Registrierungsmodul kann sowohl ein Benutzer als auch ein LoginToboggan sein .


quelle
1

In Bezug auf das "vollständige Benutzerregistrierungsformular" können Sie unter Admin >> Benutzerverwaltung >> Profile Ihre Felder erstellen / anpassen und sicherstellen, dass Sie die Option "Im Benutzerregistrierungsformular sichtbar" aktivieren.


quelle
0

Wenn ich user_profile.tpl.phpdann bearbeite, kann ich den Registrierungsteil einfach so pflegen, wie ich möchte.

<?php
   // Validate the username:
   if (user_access('change own username') || user_access('administer users') || arg(1) == 'register') {
     if ($error = user_validate_name($edit['name'])) {
       form_set_error('name', $error);
     }
     else if (db_num_rows(db_query("SELECT uid FROM {users} WHERE uid != %d AND LOWER(name) = LOWER('%s')", $uid, $edit['name'])) > 0) {
       form_set_error('name', t('The name %name is already taken.', array('%name' => $edit['name'])));
     }
     else if (drupal_is_denied('user', $edit['name'])) {
       form_set_error('name', t('The name %name has been denied access.', array('%name' => $edit['name'])));
     }
   }
?>

quelle