ExpressionEngine has most program friendly structure for this.
You can just write 2 db insert commands to save members programatically. Where 1 table would be exp_members
and other one is exp_member_data
.
For password, You can encrypt it with md5
algorithm and leave salt and unique key fields blank. When user will login for the first time, password will be encrypted with salt and data will be save in table. (EE handles that.)
I would use this 2 queries to save members:
INSERT INTO `exp_members` (`group_id`, `username`, `screen_name`, `password`, `email`, `ip_address`, `join_date`) VALUES ('5', 'test_user', 'test user', MD5('test_user'), '[email protected]', '192.168.1.1', '1534230407');
You will then need to fire a select query that will give you member_id of data you just inserted. You can use username, email etc. to filter the result to get member_id. Once you get member_id, you can fire another query in exp_member_data
.
INSERT INTO `exp_member_data` (`member_id`) VALUES ('$MY_MEMBER_ID');
Note: Create member programatically live above will not validate data with EE validation library. If you want to have this functionality for backend it is fine. But, Use any member plugin for frontend member registration.