Com inserir manualment un usuari en un fòrum SMF Ús de PHP

Publicat a SMF (Fòrum màquina simple) , php per ShortLikeAFox el 28 juliol 2008

Aquest exemple específic és per SMF 1.1.5. No puc garantir que funcioni amb qualsevol altra versió.

Així que executa Simple Machine Fòrum de Software i desitja introduir manualment un usuari? No hi ha problema. Sé que aquest problema sembla molt específic, però les idees exposades aquí es poden adaptar a altres tipus de fòrums i altres paquets de programari de Base de dades manejada com Wordpress. Abans d'entrar en exactament com fer-ho, donem una ullada a com Simple Machine Fòrums realitza un seguiment dels usuaris. A la base de dades SMF hi ha una taula anomenada smf_members. El smf_members estructura són aquestes:

Camp Tipus Nul

Clau Defecte Extra
ID_MEMBER MEDIUMINT (8) sense signe NO PRI NULL AUTO_INCREMENT
MemberName VARCHAR (80) NO MUL
dateRegistered int (10) sense signar NO MUL 0
llocs MEDIUMINT (8) sense signe NO MUL 0
ID_GROUP smallint (5) sense signar NO MUL 0
lngfile TINYTEXT NO MUL
lastlogin int (10) sense signar NO MUL 0
Realname TINYTEXT NO
instant smallint (5) NO 0
unreadMessages smallint (5) NO 0
buddy_list text NO
pm_ignore_list text NO
messageLabels text NO
passwd VARCHAR (64) NO
emailAddress TINYTEXT NO
personalText TINYTEXT NO
gènere tinyint (4) sense signar NO 0
data de naixement data NO MUL 0001-01-01
websiteTitle TINYTEXT NO
websiteUrl TINYTEXT NO
ubicació 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
signatura text NO
timeOffset flotador NO 0
avatar TINYTEXT NO
pm_email_notify tinyint (4) NO 0
karmaBad smallint (5) sense signar NO 0
karmaGood smallint (5) sense signar NO 0
Títol d'usuari 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) sense signar NO 0
is_activated TINYINT (3) sense signar NO 1
validation_code VARCHAR (10) NO
ID_MSG_LAST_VISIT int (10) sense signar NO 0
additionalGroups TINYTEXT NO
smileySet VARCHAR (48) NO
ID_POST_GROUP smallint (5) sense signar NO MUL 0
totalTimeLoggedIn int (10) sense signar NO 0
passwordSalt VARCHAR (5) NO

Els camps que hem de prestar atenció a:

  • MemberName - Self explanitory.
  • dateRegistered - No és necessari, però si no es completa la data de registre es mostra com 31 des 1969. La data es guarda com un timestamp època. No sap com calcular les marques de temps al teu cap? No hi ha problema. Puc utilitzar el generador lliure que es trobi aquí .
  • nom real - En cas d'inserir. Quan no estic segur que, simplement repetiu de membre aquí.
  • emailAddress - Self explanitory.
  • is_activated - S'ha d'establir en 1, ja que estem activant manualment un membre.
  • ID_POST_GROUP - No vaig a mentir. No estic segur del que és això, però sempre sembla que s'estableix en 4. Així que .... Sempre que estableix 4. No és la millor forma de programar, però què pots fer?
  • passwd - La contrasenya que voleu donar-li al nou usuari. És impossible trobar la manera d'entrar sense tenir en compte la documentació SMF. El codi adequat per a xifrar una contrasenya per a la base de dades SMF són aquestes:

($memberName).$password) $ Passwd = SHA1 (strtolower ($ MemberName). $ Contrasenya)

En la línia anterior de codi, la contrasenya és $ contrasenya real de l'usuari.

Com aconseguir-ho:

/ / En primer lloc, connectar-se a la base de dades SMF

$ Host = "host"; / / Nom del host
nom d'usuari $ = "nom d'usuari" / / nom d'usuari MySQL
micontraseña $ = "contrasenya"; / / contrasenya de MySQL
db_name $ = "usuari"; / / Nom de base de dades

("cannot connect to server"); mysql_connect ("host" $ ", $ nom d'usuari", "$ micontraseña") or die ("No es pot connectar al servidor");
("cannot select DB"); mysql_select_db ("$ db_name") or die ("No es pot seleccionar BD");

MemberName $ = "Ironman";
Realname $ = "Tony Stark";
emailAddress $ = "ironMan@ironMan.com";
$ Is_activated = 1;
$ ID_POST_GROUP = 4;

$ Password = "Tony1234";

($memberName).$password); $ Password = SHA1 (strtolower ($ MemberName). $ Password);

$ DateRegistered = 1216951200 / / 07/25/2008 02 PM

$ Query = "INSERT INTO smf_members (de membre, nom real, emailAddress, is_activated, ID_POST_GROUP, passwd, dateRegistered) VALUES ('$ MemberName', '$ nom real', '$ emailAddress', '$ is_activated', '$ ID_POST_GROUP', ' $ password ',' $ dateRegistered ') ";
("SMF Error 101.234 "); $ Resultat = mysql_query ($ consulta) or die ("Error 101,234 SMF");

Això és tot el que cal fer!