Si të manualisht Fut një User në një forum SMF Përdorimi PHP

Posted në SMF (Simple Machine Forum) , php nga ShortLikeAFox më 28 korrik, 2008

Ky shembull i veçantë është për SMF 1.1.5. Unë nuk mund të garantojë se do të punojë me ndonjë version tjetër.

Kështu që ju drejtuar Simple Machine Forum Software dhe duan të dorë të hyrë në një përdorues? Nuk ka problem. Unë e di këtë problem duket shumë specifike, por idetë shpjegoi këtu mund të përshtatet për lloje të tjera të forumeve dhe bazës së të dhënave të tjera të paketave software shtyrë të tilla si Wordpress. Para se të marrim në saktësi se si ta bëni këtë, le të marrin një sy se si Simple Machine Forum mban gjurmët e përdoruesit. Në bazën e të dhënave SMF ka një tabelë të quajtur smf_members. Smf_members Struktura duket si ky:

Fushë Lloj I pavlefshëm

Kyç Default Shtesë
ID_MEMBER mediumint (8) unsigned JO PRI NULL auto_increment
memberName VARCHAR (80) JO Mul
dateRegistered int (10) unsigned JO Mul 0
Postimet mediumint (8) unsigned JO Mul 0
ID_GROUP smallint (5) unsigned JO Mul 0
lngfile tinytext JO Mul
lastLogin int (10) unsigned JO Mul 0
realname tinytext JO
instantMessages smallint (5) JO 0
unreadMessages smallint (5) JO 0
buddy_list tekst JO
pm_ignore_list tekst JO
messageLabels tekst JO
passwd VARCHAR (64) JO
emailAddress tinytext JO
personalText tinytext JO
gjini tinyint (4) unsigned JO 0
Ditëlindja data JO Mul 0001-01-01
websiteTitle tinytext JO
websiteUrl tinytext JO
vend tinytext JO
ICQ tinytext JO
AIM VARCHAR (16) JO
YIM VARCHAR (32) JO
MSN tinytext JO
hideEmail tinyint (4) JO 0
showOnline tinyint (4) JO 1
timeFormat VARCHAR (80) JO
nënshkrim tekst JO
timeOffset nxjerr në shitje JO 0
avatar tinytext JO
pm_email_notify tinyint (4) JO 0
karmaBad smallint (5) unsigned JO 0
karmaGood smallint (5) unsigned JO 0
usertitle tinytext JO
notifyAnnouncements tinyint (4) JO 1
notifyOnce tinyint (4) JO 1
notifySendBody tinyint (4) JO 0
notifyTypes tinyint (4) JO 2
memberIP tinytext JO
memberIP2 tinytext JO
secretQuestion tinytext JO
secretAnswer VARCHAR (64) JO
ID_THEME tinyint (4) unsigned JO 0
is_activated tinyint (3) unsigned JO 1
validation_code VARCHAR (10) JO
ID_MSG_LAST_VISIT int (10) unsigned JO 0
additionalGroups tinytext JO
smileySet VARCHAR (48) JO
ID_POST_GROUP smallint (5) unsigned JO Mul 0
totalTimeLoggedIn int (10) unsigned JO 0
passwordSalt VARCHAR (5) JO

Fushat e ne duhet t'i kushtojnë vëmendje të:

  • memberName - Explanitory Vetë.
  • dateRegistered - A nuk është e nevojshme, por në qoftë se nuk plotësohet nga data e regjistruara tregon si 31 dhjetor 1969. Data e ruhet si një Ndërmjetës epoke. A nuk e di se si të llogaritur timestamps në kokën tuaj? Nuk ka problem. I use gjenerator pa gjetur këtu .
  • realname - duhet të shtohet. Kur unë nuk jam i sigurt se unë vetëm e përsëris memberName këtu.
  • emailAddress - Explanitory Vetë.
  • is_activated - Duhet të jetë vendosur në 1 sepse jemi me dorë aktivizimin një anëtar.
  • ID_POST_GROUP - Unë nuk do të gënjeshtër. Unë nuk jam i sigurt se çfarë është kjo, por ajo gjithmonë duket të jetë e vendosur për të 4. Pra .... Unë gjithmonë e vendosur atë në 4. Nuk është mënyra më e mirë për të programit, por çfarë mund të bëni?
  • passwd - fjalëkalimin që dëshiron të japë përdorues të ri. Është e pamundur të kuptoj se si të hyjnë pa shikuar në dokumentacionin SMF. Kodi i duhur për të encrypt SMF një fjalëkalim për bazën e të dhënave duket si ky:

($memberName).$password) $ Passwd = sha1 (strtolower ($ memberName). $ Password)

Në linjë mësipërme të kodit, fjalekalimin $ është fjalëkalimin aktual të përdoruesit.

Si të bëhet kjo:

/ / Së pari, lidhur me bazën e të dhënave SMF

$ host = "hostname"; / / Emri i Host
$ username = "username"; / / username MySQL
mypassword $ = "Fjalëkalimi"; / / MySQL password
db_name $ = "username"; / / emri i të Dhënave

("cannot connect to server"); mysql_connect ("host" $, "$ username", "$ mypassword") ose të vdesin ("nuk mund të lidheni me serverin");
("cannot select DB"); mysql_select_db ("$ db_name") ose të vdesin ("nuk mund të zgjidhni DB");

memberName $ = "Ironman";
realname $ = "Toni i ngurtë";
emailAddress $ = "ironMan@ironMan.com";
$ Is_activated = 1;
$ ID_POST_GROUP = 4;

$ password = "Tony1234";

($memberName).$password); $ password = sha1 (strtolower ($ memberName). $ password);

$ DateRegistered = 1216951200; / / 2008/07/25 02:00

$ query = "INSERT NË smf_members (memberName, realname, emailAddress, is_activated, ID_POST_GROUP, passwd, dateRegistered) VLERAT ('$ memberName', '$ realname', '$ emailAddress', '$ is_activated', '$ ID_POST_GROUP', ' Fjalëkalimi $ ',' $ dateRegistered ') ";
("SMF Error 101.234 "); $ rezultati = mysql_query ($ query) ose të vdesin ("Gabim SMF 101,234");

Kjo është e gjitha nuk është për atë!