Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在Moodle中手动创建用户?_Php_Authentication_Login_Moodle - Fatal编程技术网

Php 如何在Moodle中手动创建用户?

Php 如何在Moodle中手动创建用户?,php,authentication,login,moodle,Php,Authentication,Login,Moodle,我正在尝试创建一个身份验证插件,但是当用户不在moodle数据库中时,我遇到了问题。因此,我试图找到一种手动创建用户的方法 我试过: $user = new StdClass(); $user->username = $ucUser; $user->auth = 'ucauth'; $user->firstname = "First"; $user->lastname = "Last"; $user->id = $D

我正在尝试创建一个身份验证插件,但是当用户不在moodle数据库中时,我遇到了问题。因此,我试图找到一种手动创建用户的方法

我试过:

$user            = new StdClass();
$user->username  = $ucUser;
$user->auth      = 'ucauth';
$user->firstname = "First";
$user->lastname  = "Last";
$user->id        = $DB->insert_record('user', $user);

但它不起作用。。。我有一个插入错误。
$user
对象中还需要什么?

用户对象应具有以下值:

$user             = new StdClass();
$user->auth       = 'manual';
$user->confirmed  = 1;
$user->mnethostid = 1;
$user->email      = "email";
$user->username   = "username";
$user->password   = md5('password');
$user->lastname   = "lastname";
$user->firstname  = "firstname";
$user->id         = $DB->insert_record('user', $user);

请尝试此操作。

好吧,我建议您使用
验证用户登录($username,null)
这将为您提供一个空用户,您可以稍后在过程中完成。然后您可以使用
完成用户登录($user)
if (user_not_fully_set_up($USER)) {
            $urltogo = $CFG->wwwroot.'/user/edit.php';
        }else{
            $urltogo = $CFG->wwwroot.'/';
        }

    redirect($urltogo);

我不知道你到底想达到什么目的。但我已经制作了一个插件来连接外部web服务,我花了一段时间才弄明白如何正确地完成它。我可以为您提供任何需要的帮助。

手动创建用户时,需要设置一些值。我也面临同样的情况,最终得到了这个解决方案:

global $DB;    
$user             = new StdClass();
$user->email      = strtolower('someemail'); //MOODLE requires lowercase
$user->username   = strtolower('someusername');//MOODLE requires lowercase
$user->password   = hash_internal_user_password('somepassword');
$user->lastname   = 'somelastname';
$user->firstname  = 'somename';
// These values are required. 
// Default values are stored in moodle config files but... this is easier.
$user->auth       = 'manual';
$user->confirmed  = 1;
$user->mnethostid = 1;
$user->country    = 'ES'; //Or another country
$user->lang       = 'es'; //Or another country
$user->timecreated = time();
$user->maildisplay= 0;

$user->id = $DB->insert_record('user', $user); // returns new userid
如果愿意,可以检索整个用户的数据:

$lastid = $DB->insert_record('user', $user);
$user2 = get_complete_user_data('id', $lastid);

我的问题是,当我试图手动验证一个用户(尽管是Web服务)时,它对不在moodle数据库中的用户不起作用(如果有意义的话)。所以,我想要的是在moodle数据库中创建用户,这样我的手动身份验证就可以工作了。差不多吧。但我实际上找到了一种解决方法,已经在使用的LDAP插件创建了这个moodle用户,所以。。。当尝试使用我的插件时,如果用户不存在,我会告诉moodle使用LDAP插件,下一次,由于用户现在已经创建,我的插件可以工作。谢谢你的帮助!