Php 检查drupal中是否已经存在用户
当用户输入登录信息并点击提交时,我想检查该用户是否已经存在。 因此,我有以下两个问题 1.当用户点击登录表单上的提交按钮时,需要实现哪个钩子。我需要用户输入的用户名。 2.如何检查drupal中是否已经存在用户 一些示例代码将非常感谢。 请帮忙Php 检查drupal中是否已经存在用户,php,drupal,drupal-fapi,drupal-alter,Php,Drupal,Drupal Fapi,Drupal Alter,当用户输入登录信息并点击提交时,我想检查该用户是否已经存在。 因此,我有以下两个问题 1.当用户点击登录表单上的提交按钮时,需要实现哪个钩子。我需要用户输入的用户名。 2.如何检查drupal中是否已经存在用户 一些示例代码将非常感谢。 请帮忙 谢谢。这可以通过hook\u form\u alter完成: function module_(&$form, &$form_state, $form_id) { $user_login_forms = array('user_log
谢谢。这可以通过
hook\u form\u alter
完成:
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
}
}
在这种情况下,直接查询DB比使用
user\u load
更好,因为它也与其他模块挂钩。在Drupal 7中,在验证函数中替换此选项:
if (!db_query("SELECT COUNT(*) FROM {users} WHERE name = :name", array(':name' => $name))->fetchField()) {
// User doesn't exist
}
Drupal 7提供了一个按名称获取用户对象的函数:
$user = user_load_by_name($name);
if(!$user){
// User doesn't exist
}
else {
// User exists
}
我意识到这已经快2年了,但是用户认证做得很好
$existing_user = user_authenticate($name,$password);
if($existing_user)
// user exists
else
// user doesn't exist
希望这对其他人有所帮助。你可以试着从这两个模块中寻找灵感。我忘了你可以用
hook\u form\u alter来实现这一点。
!荣誉删除我的答案。这不适用于Drupal 7。这是:$result=db_query(“从{users}中选择COUNT(*),其中uid=:uid”,数组(':uid'=>$uid))->fetchField();如果($result==0){//User不存在,则返回FALSE;}返回TRUE代码>这是一个繁重的解决方案,因为它加载整个用户对象,只是通过名称验证是否存在用户。此外,如果您正在加载用户,请不要使用名为$user
的变量,因为它很容易与当前用户帐户的全局$user
相混淆。如果您正在通过邮件搜索,您也可以使用user\u load\u by\u mail
:这需要密码,这是一个错误的答案。如果用户输入用户名和密码,为什么这是一个错误的解决方案?密码没有显示,我只是在使用给定的密码。我错过什么了吗?