Como inserir manualmente um usuário em um fórum SMF Utilizando PHP
Este exemplo específico para SMF 1.1.5. Não posso garantir que irá funcionar com qualquer outra versão.
Então você corre Simple Machine Fórum de Software e pretende introduzir manualmente um usuário? Sem problemas. Eu sei que este problema parece ser muito específico, mas as idéias aqui expostas pode ser adaptado para outros tipos de fóruns e outros pacotes de software de banco de dados orientado como o Wordpress. Antes de entrarmos exatamente como fazer isso, vamos dar uma olhada em como Simple Machine Fóruns mantém registro de usuários. No banco de dados SMF existe uma tabela chamada smf_members. O smf_members estrutura parecida com esta:
| Campo | Tipo | Nulo | Chave | Omissão | Extra |
|---|---|---|---|---|---|
| ID_MEMBER | MEDIUMINT (8) unsigned | NO | PRI | NULL | auto_increment |
| memberName | varchar (80) | NO | MUL | ||
| dateRegistered | int (10) unsigned | NO | MUL | 0 | |
| posts | MEDIUMINT (8) unsigned | NO | MUL | 0 | |
| ID_GROUP | smallint (5) unsigned | NO | MUL | 0 | |
| lngfile | TINYTEXT | NO | MUL | ||
| lastlogin | int (10) unsigned | NO | MUL | 0 | |
| realname | TINYTEXT | NO | |||
| instantMessages | smallint (5) | NO | 0 | ||
| Unreadmessages | smallint (5) | NO | 0 | ||
| buddy_list | texto | NO | |||
| pm_ignore_list | texto | NO | |||
| messageLabels | texto | NO | |||
| passwd | varchar (64) | NO | |||
| emailAddress | TINYTEXT | NO | |||
| personalText | TINYTEXT | NO | |||
| gênero | tinyint (4) unsigned | NO | 0 | ||
| data de nascimento | data | NO | MUL | 0001-01-01 | |
| websiteTitle | TINYTEXT | NO | |||
| WebSiteUrl | TINYTEXT | NO | |||
| localização | TINYTEXT | NO | |||
| ICQ | TINYTEXT | NO | |||
| AIM | varchar (16) | NO | |||
| YIM | varchar (32) | NO | |||
| MSN | TINYTEXT | NO | |||
| hideEmail | tinyint (4) | NO | 0 | ||
| showOnline | tinyint (4) | NO | 1 | ||
| timeformat | varchar (80) | NO | |||
| assinatura | texto | NO | |||
| timeOffset | flutuar | NO | 0 | ||
| avatar | TINYTEXT | NO | |||
| pm_email_notify | tinyint (4) | NO | 0 | ||
| karmaBad | smallint (5) unsigned | NO | 0 | ||
| karmaGood | smallint (5) unsigned | NO | 0 | ||
| usertitle | TINYTEXT | NO | |||
| notifyAnnouncements | tinyint (4) | NO | 1 | ||
| notifyOnce | tinyint (4) | NO | 1 | ||
| notifySendBody | tinyint (4) | NO | 0 | ||
| notifyTypes | tinyint (4) | NO | 2 | ||
| memberIP | TINYTEXT | NO | |||
| memberIP2 | TINYTEXT | NO | |||
| secretQuestion | TINYTEXT | NO | |||
| secretAnswer | varchar (64) | NO | |||
| ID_THEME | tinyint (4) unsigned | NO | 0 | ||
| is_activated | tinyint (3) unsigned | NO | 1 | ||
| validation_code | varchar (10) | NO | |||
| ID_MSG_LAST_VISIT | int (10) unsigned | NO | 0 | ||
| additionalGroups | TINYTEXT | NO | |||
| smileySet | varchar (48) | NO | |||
| ID_POST_GROUP | smallint (5) unsigned | NO | MUL | 0 | |
| totalTimeLoggedIn | int (10) unsigned | NO | 0 | ||
| passwordSalt | varchar (5) | NO |
Fields é preciso prestar atenção:
- memberName - auto-explicativas.
- dateRegistered - não é necessário, mas se não for preenchido a data registrada exibe como 31 dezembro de 1969. A data é guardada como um timestamp época. Não sei como calcular timestamps em sua cabeça? Sem problemas. Eu uso o gerador de livres encontrados aqui .
- realname - devem ser inseridos. Quando eu não estou certo de que basta repetir memberName aqui.
- emailAddress - auto-explicativas.
- is_activated - Deve ser definido como uma vez que estamos a activar manualmente um membro.
- ID_POST_GROUP - Eu não vou mentir. Não tenho certeza o que é isso, mas ela parece sempre ser ajustado para 4. Então .... Eu sempre defini-la a 4. Não é a melhor forma de programa, mas o que você pode fazer?
- passwd - A senha que você quer dar ao novo usuário. É impossível descobrir como entrar sem olhar a documentação do SMF. O código apropriado para criptografar a senha do banco de dados SMF parecido com este:
($memberName).$password) $ Passwd = sha1 (strtolower ($ memberName). $ Password)
Na linha de código acima, $ senha é a senha real do usuário.
Como fazer:
/ / Primeiro, ligue para o banco de dados SMF
$ host = hostname "" / / nome do host
$ username = "username" / / username Mysql
minhasenha = $ senha "; / senha Mysql
db_name $ username = "" / / nome do banco de dados
("cannot connect to server"); mysql_connect ("$ host", $ username "," $ minhasenha ") or die (" não pode se conectar ao servidor ");
("cannot select DB"); mysql_select_db ("$ db_name") or die ("Não é possível selecionar a DB");
memberName ironman $ = "";
realname $ = "Tony Stark";
emailAddress ironMan@ironMan.com $ = "";
$ Is_activated = 1;
$ ID_POST_GROUP = 4;
$ senha = "Tony1234";
($memberName).$password); $ senha = sha1 (strtolower ($ memberName). $ password);
$ DateRegistered = 1216951200 / / 2008/07/25 02:00
$ query = "INSERT INTO smf_members (memberName, realname, emailAddress, is_activated, ID_POST_GROUP, passwd, dateRegistered) VALUES ('$ memberName', '$ realname', '$ emailAddress', '$ is_activated', '$ ID_POST_GROUP', ' $ senha ',' $ dateRegistered ') ";
("SMF Error 101.234 "); $ resultado = mysql_query ($ query) or die ("Erro SMF 101,234);
Isso é tudo que existe para ela!








































