Как да Ръчно Вмъкване на потребителя в един SMF форум Използване на PHP

Публикувано в SMF (необходимо е обикновено машина форум) , PHP от ShortLikeAFox на 28-ми юли, 2008 год.

Този конкретен пример е за SMF 1.1.5. Не можем да гарантираме, че ще работи с всяка друга версия.

Така че тече Обикновено машина форум Софтуер и искате да въведете ръчно един потребител? Няма проблем. Знам, че този проблем изглежда много специфичен, но идеята е обяснено тук може да се адаптира към различни видове форуми и други данни задвижвани софтуерни пакети, като Wordpress. Преди да влязат в точно как да стане това, нека да разгледаме как просто машина Форуми следи от потребители. В базата данни SMF има таблица, наречена smf_members. В smf_members структура изглежда така:

Област Тип Нула

Ключ По подразбиране Допълнително
ID_MEMBER mediumint (8) грозен NO PRI NULL auto_increment
memberName VARCHAR (80) NO MUL
dateRegistered INT (10) грозен NO MUL 0
мнения mediumint (8) грозен NO MUL 0
ID_GROUP smallint (5) грозен NO MUL 0
lngfile tinytext NO MUL
lastLogin INT (10) грозен NO MUL 0
realName tinytext NO
instantMessages smallint (5) NO 0
unreadMessages smallint (5) NO 0
buddy_list текст NO
pm_ignore_list текст NO
messageLabels текст NO
passwd VARCHAR (64) NO
emailAddress tinytext NO
personalText tinytext NO
пол tinyint (4) грозен NO 0
дата на раждане дата NO MUL 0001-01-01
websiteTitle tinytext NO
websiteUrl tinytext NO
място 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
на средата VARCHAR (80) NO
подпис текст NO
timeOffset поплавък NO 0
въплъщение tinytext NO
pm_email_notify tinyint (4) NO 0
karmaBad smallint (5) грозен NO 0
karmaGood smallint (5) грозен 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) грозен NO 0
is_activated tinyint (3) грозен NO 1
validation_code VARCHAR (10) NO
ID_MSG_LAST_VISIT INT (10) грозен NO 0
additionalGroups tinytext NO
smileySet VARCHAR (48) NO
ID_POST_GROUP smallint (5) грозен NO MUL 0
totalTimeLoggedIn INT (10) грозен NO 0
passwordSalt VARCHAR (5) NO

Сферата трябва да обърнат внимание на:

  • memberName - Самостоятелно Explanitory.
  • dateRegistered - не е необходимо, но ако не попълва датата регистрирани показва като 31ви Дек, 1969. Датата се записва като една епоха клеймо. Не знам как да се изчисли времеви отпечатъци в главата ти? Няма проблем. Да използвам свободното генератор намерени тук .
  • realName - трябва да се включат. Когато не съм сигурен, че просто се повтаря memberName тук.
  • emailAddress - Самостоятелно Explanitory.
  • is_activated - Трябва да бъде зададен на 1, тъй като ние сме ръчно активиране на член.
  • ID_POST_GROUP - Няма да лъжа. Аз не съм сигурен какво е, но винаги изглежда да се определят до 4. Така че .... Винаги съм го до 4. Не е най-добрият начин за програмата, но това, което можеш да направиш?
  • passwd - паролата, която искате да се даде на нов потребител. Невъзможно е да разбера как да се влиза без да погледне документацията, SMF. Правилното код за криптиране на парола SMF за базата данни изглежда така:

($memberName).$password) $ Passwd = sha1 (strtolower ($ memberName). $ Паролата)

В горния ред от кода, $ парола е действително паролата на потребителя.

Как да го постигнете:

/ / От една страна, се свърже с базата данни SMF

$ Домакин = "име на хост"; / / Име на хоста
$ Име = "Потребител"; / / MySQL потребителско име
$ Mypassword = "парола"; / / MySQL парола
$ Db_name = "Потребител"; / / База данни име

("cannot connect to server"); mysql_connect ("$ домакин", "$ потребителско име", "$ mypassword"), или умират ("не може да се свърже със сървъра");
("cannot select DB"); mysql_select_db ("$ db_name"), или умират ("не може да изберете DB");

$ MemberName = "Ironman";
$ RealName = "Тони Старк";
$ EmailAddress = "ironMan@ironMan.com";
$ Is_activated = 1;
$ ID_POST_GROUP = 4;

$ Парола = "Tony1234";

($memberName).$password); $ Парола = sha1 (strtolower ($ memberName). $ Парола);

$ DateRegistered = 1216951200; / / 07.25.2008 2 ч.

$ Заявка = "вкарва в smf_members (memberName, realName, emailAddress, is_activated, ID_POST_GROUP, passwd, dateRegistered) стойности (" $ memberName ',' $ realName ',' $ emailAddress ',' $ is_activated ',' $ ID_POST_GROUP ',' $ парола ',' $ dateRegistered ') ";
("SMF Error 101.234 "); $ Резултат = mysql_query ($ заявка), или умират ("Грешка SMF 101,234");

Това е всичко, което трябва да го!