Wenn ein Benutzer seine Anmeldeinformationen eingibt und auf Senden klickt, möchte ich prüfen, ob der Benutzer bereits existiert oder nicht. So, ich habe die folgenden zwei Fragen 1. Welcher Hook benötigt wird, um für den Fall implementiert zu werden, wenn Benutzer den Absendenknopf auf dem Anmeldeformular trifft. Ich brauche den Benutzernamen, den der Benutzer eingegeben hat. 2. Wie überprüft man, ob ein Benutzer bereits in Drupal oder nicht programmatisch existiert?Überprüfung, ob ein Benutzer bereits in Drupal existiert
Einige Beispielcode würde wirklich geschätzt werden. Bitte helfen.
Vielen Dank.
function module_(&$form, &$form_state, $form_id) {
$user_login_forms = array('user_login', 'user_login_block');
if (in_array($form_id, $user_login_forms)) {
$form['#validate'][] = 'my_validate_function';
}
}
function my_validate_function(&$form, &$form_state) {
$name = $form_state['values']['name'];
// Drupal 6:
if (!db_result(db_query("SELECT COUNT(*) FROM {users} WHERE name = '%s';", $name))) {
// User doesn't exist
}
// Drupal 7:
if (!db_query("SELECT COUNT(*) FROM {users} WHERE name = :name;", array(':name' => $name))->fetchField()) {
// User doesn't exist
}
}
Es ist besser, fragen Sie die DB direkt in diesem Fall als als die Verwendung von user_load
wie es auch in anderen Modulen Haken:
Ich hätte vergessen, dass du das mit 'hook_form_alter' machen kannst! Kudos! Löschen meiner Antwort – ceejayoz
Dies funktioniert nicht für Drupal 7. Dies bedeutet: '$ result = db_query (" SELECT COUNT (*) VON {users} WHERE uid =: uid ", array (': uid' => $ uid)) -> fetchField(); if ($ result == 0) { // Benutzer existiert nicht return FALSE; } return TRUE; ' – DrCord