Como inserir manualmente um usuário em um fórum SMF Utilizando PHP

Postado em SMF (Simple Machine Forum) , php por ShortLikeAFox em 28 de julho de 2008

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!