Для регистрации я использую следующий вариант:1. Пользователь проходит регистрацию через сайт. Данные поступают в таблицу users в базе. Вот к примеру дамп:
Код
CREATE TABLE IF NOT EXISTS `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`email` varchar(255) NOT NULL,
`login` varchar(255) NOT NULL,
`passwd` varchar(255) DEFAULT NULL,
`ip` varchar(255) NOT NULL,
`active` smallint(1) NOT NULL DEFAULT '0',
`code` varchar(255) NOT NULL,
`sphere` smallint(1) NOT NULL DEFAULT '0',
`created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `login` (`login`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
Поле active в моем случае это флаг подтвердил учетку юзер по email или нет. А вот поле sphere будет говорить создан пользователь у нас в sphereaccu или еще нет.
2. Пишем маленькую функцию для выборки всех записей с таблицы где sphere = 0, т.е. тех кто был зарегистрирован на сайте но еще небыл добавлен в базу:
Код
[FUNCTION reg_new_users]
IF (<DB.Connected>==0)
DB.Connect
ENDIF
DB.QUERY "SELECT * FROM users WHERE `sphere`=0"
if (<DB.ROW.numrows> > 0)
for i 0 <eval <DB.ROW.numrows>-1>
SERV.ACCOUNT add <DB.ROW.<eval <LOCAL.i>>.login> <eval <DB.ROW.<eval <LOCAL.i>>.passwd>>
DB.EXECUTE "UPDATE users SET `sphere`=1 WHERE `login`='<DB.ROW.<eval <LOCAL.i>>.login>'"
SERV.LOG New User: <DB.ROW.<eval <LOCAL.i>>.login> created!
end
endif
(функцию добавляем в любой .scp файл или создаем новый в папке scripts)
3. Открываем sphere_triggers.scp, находим f_onserver_timer и добавляем в самом начале запуск нашей функции:
Код
[FUNCTION f_onserver_timer]
reg_new_users
SERV.Account UPDATE
...
Вот и все, теперь каждые N минут функция reg_new_users будет автоматически запускаться и добавлять
в сферу новых пользователей.
п.с. Интервал запуска f_onserver_timer зависит от директивы TimerCall=5 в sphere.ini