Advertisement
Sadchenko

D7. Програмное создание пользователя с проверкой

Apr 5th, 2017
629
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 1.85 KB | None | 0 0
  1.   global $user;
  2.      $mail = сюда суём адрес почты;
  3.       $count = db_select('users')
  4.       ->condition('mail', $mail)
  5.       ->countQuery()
  6.       ->execute()
  7.       ->fetchField();
  8.    
  9.     //код если нашли совпадения;
  10.     if ($count != 0) {
  11.   if ($user->uid == 0) {
  12.       //Создадим пользователя (имя и пароль будут генерироваться случайно)
  13.  
  14.   $pass_gen='1111111111'; // здесь функция генерации пароля должна быть
  15.   $email_gen='test8@test123.ru'; //у меня емаил юзера будет передаватсья в урле методом ПОСТ
  16.  
  17.   // Регистрация юзера (имя юзера у меня равно емаилу для простоты)
  18.   $arguments = array(
  19.     'name' => $email_gen,
  20.     'pass' => $pass_gen,
  21.     'mail' => $email_gen,
  22.     'init' => $email_gen,
  23.     'status' => 1,
  24.     'roles' => array(DRUPAL_AUTHENTICATED_RID => TRUE),
  25.   );
  26.  
  27.   user_save( NULL, $arguments );
  28.  
  29.   // авторизация юзера:
  30.   function druwebru_authenticate_programmatically($email_gen, $pass_gen) {
  31.  
  32.     // Пытаемся авторизоваться:
  33.     if (user_authenticate($email_gen, $pass_gen)) :
  34.         $user_object = user_load_by_name($email_gen);
  35.         $form_state = array();
  36.         $form_state['uid'] = $user_object->uid;
  37.         user_login_submit(array(), $form_state);
  38.         return true;
  39.     else :
  40.         return false;
  41.     endif;
  42.   }
  43.  
  44.   /* Пример использования: */
  45.   if (druwebru_authenticate_programmatically($email_gen, $pass_gen))
  46.     print "Вы вошли на сайт!";
  47.   else
  48.     print "Не удалось войти на сайт.";
  49.  
  50. } else {
  51. echo "Вы уже авторизованы как юзер: ".$user->uid;
  52. }
  53.  
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement